哪些C#数据类型可以为可空类型?

Ran*_*der 9 c# nullable

有人可以给我一个列表,或者指出我可以在哪里找到可以为可空类型的C#数据类型列表?

例如:

  • 我知道Nullable<int>没关系
  • 我知道Nullable<byte[]>不是.

我想知道哪些类型可以为空,哪些不可以.顺便说一下,我知道我可以在运行时测试它.但是,这是我们正在编写的代码生成器,所以我没有实际的类型.我只知道列是stringint32(等).

Kon*_*lph 20

所有值类型(除了Nullable<T>它自己)都可以在可空类型中使用 - 即从System.ValueType(也包括enums!)派生的所有类型.

这样做的原因Nullable是声明如下:

struct Nullable<T> where T : struct, new() { … }
Run Code Online (Sandbox Code Playgroud)

  • 次要挑剔:所有值类型*除了*Nullable类型本身.即follwoing无效:var i = new Nullable <Nullable <int >>(); (4认同)
  • @OP:...因为重点是解决问题(我称之为主要的设计缺陷;其他人不同意),价值类型不可空.(http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx)他们肯定没有任何帮助,称之为"Nullable"!因为事情就像你的问题"哪些类型可以为空?" 答:引用类型可以为空.值类型与`Nullable`兼容,这是相反的.*叹气*;-) (3认同)
  • @TJCrowder:我一个人不同意...... (2认同)