有人可以给我一个列表,还是指向我可以找到可以为可空类型的C#数据类型的列表?
例如:
Nullable<int>
没问题Nullable<byte[]>
不是。我想知道哪些类型可以为空,哪些类型不可以。顺便说一下,我知道我可以在运行时测试它。但是,这是我们正在编写的代码生成器,所以我没有实际的类型。我只知道列是string
或int32
(等)。
答案 0 :(得分:20)
所有值类型(Nullable<T>
本身除外)都可以在可空类型中使用 - 即从System.ValueType
派生的所有类型(也包括enum
s!)。
原因是Nullable
声明如下:
struct Nullable<T> where T : struct, new() { … }
答案 1 :(得分:2)
如果一个类型可以被赋值或者可以被赋值为null,则该类型被认为是可空的,这意味着该类型没有任何价值。因此,可空类型可以表示值,或者不存在值。例如,诸如String之类的引用类型是可空的,而诸如Int32之类的值类型则不是。值类型不能为空,因为它具有足够的容量来仅表达适合该类型的值;它没有表达null值所需的额外容量。
Nullable结构仅支持使用值类型作为可空类型,因为引用类型可以通过设计为空。
Nullable类为Nullable结构提供了补充支持。 Nullable类支持获取可空类型的基础类型,以及对可为空的类型对进行比较和相等操作,其基础值类型不支持通用比较和相等操作。
来自帮助文档 http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx
答案 2 :(得分:1)
它可以是任何值类型,包括struct,它不能是引用类型,因为它们本身已经可以为空。
是: INT32 双 约会时间 CustomStruct 等
没有: 串 排列 CustomClass 等
有关详细信息,请参阅MSDN:http://msdn.microsoft.com/en-us/library/2cf62fcy(v=VS.80).aspx