2016-11-22 44 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();