2016-11-22 70 views
0

有一个字符串变量,它与一个类的名称相同。 Console.WriteLine命令”显示字符串的内容时,我显示,不过分,当我尝试的typeof()类。为什么呢?Typeof考虑类而不是变量

class Fun { } 
class MyFun 
{ 
    static void Main() 
    { 
     string Fun = "hello, world"; 
     string s = Fun; 
     Type t = typeof(Fun); 
     Console.WriteLine(s); 
     Console.WriteLine(t); 
    } 
} 
+1

因为'typeof'预计类型作为参数 – Fabio

+0

这是它是如何定义的。你可以在变量 – Adil

+0

上使用GetType更“有趣”和相关:'class Fun {public static int Length => 42; } class MyFun { static void Main() { string Fun =“hello,world”; var greatFun = Fun.Length; } }'在这种情况下,'Fun.Length'可以是局部变量的实例属性,也可以是类型的'static'属性。第一个是假设的。要获得第二个,使用命名空间限定'Fun'(如有必要,使用'global ::'命名空间别名)。 _这是不用大写首字母命名局部变量的原因之一._ –

回答

0

因为您不能typeof变量,只是一个类型。因此,班级被挑选出来。

对于变量,您可以访问object.GetType()

Type t = Fun?.GetType();