【发布时间】:2017-04-05 18:52:09
【问题描述】:
有一个与类同名的字符串变量。 Console.WriteLine"我显示的时候显示的是字符串内容,但是我尝试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);
}
}
【问题讨论】:
-
因为
typeof期望类型作为参数 -
就是这样定义的。您可以在变量上使用 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::命名空间别名)。 这是不使用大写首字母命名局部变量的原因之一。
标签: c# asp.net variables typeof