あなただけのオブジェクトの型を表す文字列を取得しようとしている場合は、あなただけの代わりに)(.GetTypeを呼び出す必要があります。
たとえば、以下は、オブジェクト型の文字列名を返す小さな関数です。
static string GetTypeString(object obj)
{
return obj.GetType().FullName;
}
これはオブジェクトへのフルパスに戻ります。 intの場合、System.Int32を返します。 Int32の部分だけが必要な場合は、代わりにGetType()。Nameを使用します。
また、中断する必要はありません。あなたがリターンを持っているならばスイッチで。
特定のコード、または返す特定の文字列に対して実行する必要がある特定のコードがある場合は、上記で返された値に文字列を使用できます。例:
static string GetSimpleType(object obj)
{
var stringRepresentation = GetTypeString(obj);
switch (stringRepresentation)
{
case "System.Int64":
case "System.Int32":
return "int";
default:
return stringRepresentation;
}
}
デフォルトは、大文字と小文字を区別しないすべてのスイッチステートメントでキャッチされます。それは他人のように考えてください。
上記の例では、int、Int32、およびInt64に同じ値を返します。ケースラベルが空の場合、ケースラベルは他のケースラベルに落ちる可能性があります。
単純なスクリプトを実行して文字列の値をハードコードすることで、スイッチを作成するために必要なすべての値を見つけることができます。これらの値は常に同じ型のため同じです。文字列が異なる場合、型は異なります。
あなたはタイプを比較している場合は最後に、場合とそうでない場合は、より良い作品:
static string GetSimpleType(object obj)
{
if (obj.GetType() == typeof(int))
{
return "int";
}
return obj.GetType().ToString();
}
'のToString()'、実行時に呼び出されるメソッドです。 –
'typeof(int)'でさえ、const値を返しません。メソッドは、const戻り値を保証しません。 –
'const'の代わりに' readonly'を使い、 'string'の代わりに' Type'を使ってみてください。 –