2016-10-15 83 views
-3

C#中的原始類型名稱是什麼?是的,我們有類似的答案,但只提到類型,而不是類型名稱: https://stackoverflow.com/a/13530321/3691653C中的原始類型名稱/不可空值類型名稱#

E.g.它提到了類型,如System.Int32System.Single,但不包括類型名稱intfloat,它們也爲我編譯。那麼,什麼是完整的類型名稱列表,包括其別名?

換句話說,我對非空的類型名稱/類型名稱感興趣,它們需要可爲空的<>關鍵字才能被設置爲null。

+0

首先,這個問題的答案定義您可能需要的所有'typenames',只需讀取列表中的第三項。其次,不存在與type類型明顯不同的「typename」 - 例如,「System.Int32」是_.NET type_,「int」是該類型的C#別名。他們本質上是一回事。第三,爲什麼不在詢問之前嘗試搜索[C#參考](https://msdn.microsoft.com/zh-cn/library/ya5y69ds.aspx)? – Gasper

回答

0

原始類型和要求Nullable<> typenames閱讀其餘是兩個完全不同的東西。

聲明爲struct而不是class的任何內容都不可空,並且要求將Nullable<>環繞它設置爲null。

「完整列表」是不可能的,因爲任何人都可以編寫自己的結構。

0

如果你想知道的是是否給定類型可以被包裝成一個可空< >與否,那麼它相當於詢問是否是值類型或不:

 Type someType = typeof(int); // then, try to change this to "typeof(string)" 
     Type someTypeNullable = null; 
     if (someType.IsValueType) 
     { 
      someTypeNullable = typeof(Nullable<>).MakeGenericType(someType); 
     } 
     if (someTypeNullable != null) 
     { 
      Console.WriteLine("nullable version: " + someType + "?"); 
     } 
     else 
     { 
      Console.WriteLine(someType + " is a reference type"); 
     } 
相關問題