2016-10-15 46 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"); 
     } 
相关问题