[英]Why I can't use the name of the class as a type?
我正在使用XmlSerializer構造函數,該構造函數要求Type對象:
XmlSerializer mySerializer = new XmlSerializer(typeof(MyClass));
為什么將類的名稱用作類型呢? 像這樣:
XmlSerializer mySerializer = new XmlSerializer(MyClass);
關於這個問題的第一條評論是正確的,但我認為可以根據實際原因進一步澄清。
MyClass不能單獨執行。 為什么? 因為c#編譯器本身沒有代碼來翻譯對執行環境有意義的“ MyClass”。
第一條語句起作用是因為XmlSerializer的構造函數需要類'Type'的實例。 typeof運算符返回Type類型的實例,該實例包含有關“ MyClass”類的信息。 運算符typeof(?)的參數必須是編譯時已知的類型。 運算符'typeof'的含義在#編譯器中進行了烘焙,因此在編譯過程中typeof(ClassName)將生成代碼,該代碼返回'Type'類的實例,該實例包含有關指定類(參數)的信息。 因為Type與其他任何類一樣,所以您甚至可以使用typeof(Type)。
XmlSerializer構造函數的參數期望使用System.Type類型的實例。 標識符MyClass不對應任何實例。 這只是一個班級的名字。 typeof關鍵字返回一個System.Type實例,該實例表示您指定的類型(在本例中,該System.Type實例表示MyClass類)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.