2016-12-27 6 views
0

私はC#の新機能で、JavaScriptのバックグラウンドから来ています(「タイピング」は私には全く新しいものです)。C#:型のような変数を使用するのはどういう意味ですか?

「...は変数ですが型のように使用されます」という警告は何を意味しますか?

私は静的関数内で、次のコードは、testと呼ばれるがあります。

var activeCell = new ExcelReference(1, 1); 
Type type = typeof(activeCell); 
+0

'タイプtype = typeof演算(ExcelReference)'や 'タイプtype = activeCell.GetType();' –

答えて

6

あなたはこの変数を使用することである何種類かを知りたい場合は、例Type type = typeof(ExcelReference);

のために、唯一のタイプでtypeofを使用することができますType type = activeCell.GetType();

+0

ありがとうございました。いつあなたは 'typeof()'を使いますかこのページには反射を記述する別の答えがあります - 私が反射を利用していた場合にのみこのメソッドが役立つと思われますか? –

+0

@ZachSmithまた、たとえば、if(input.GetType()== typeof(string)){...}のパラメータの入力タイプをチェックすることができます。この例では 'input'は' object'型です。これは反射ではなく、これは型の一般化です。 – RusArt

+0

私は、ありがとう、参照してください。 JSでは 'if(typeof input === 'string'){...}' –

1

非常に簡単です。 typeofは、Class、Interfaceなどの名前で使用され、一方、あなたが必要とするものはGetTypeです。

例:

public class MyObject 
{ 
    public static Type GetMyObjectClassType() 
    { 
     return typeof(MyObject); 
    } 
    public static Type GetMyObjectInstanceType(MyObject someObject) 
    { 
     return someObject.GetType(); 
    } 

    public static Type GetAnyClassType<GenericClass>() 
    { 
     return typeof(GenericClass); 
    } 
    public static Type GetAnyObjectInstanceType(object someObject) 
    { 
     return someObject.GetType(); 
    } 

    public void Demo() 
    { 
     var someObject = new MyObject(); 
     Console.WriteLine(GetMyObjectClassType()); // will write the type of the class MyObject 
     Console.WriteLine(GetMyObjectInstanceType(someObject)); // will write the type of your instance of MyObject called someObject 
     Console.WriteLine(GetAnyClassType<MyObject>()); // will write the type of any given class, here MyObject 
     Console.WriteLine(GetAnyClassType<System.Windows.Application>()); // will write the type of any given class, here System.Windows.Application 
     Console.WriteLine(GetAnyObjectInstanceType("test")); // will write the type of any given instance, here some string called "test" 
     Console.WriteLine(GetAnyObjectInstanceType(someObject)); // will write the type of any given instance, here your instance of MyObject called someObject 
    } 
} 
関連する問題