有人能给我提供一个C#可空类型的列表,或者指向我可以找到这个列表的地方吗?
例如:
- 我知道
Nullable<int>
是可以的。 - 我知道
Nullable<byte[]>
不行。
我想知道哪些类型是可空的,哪些不是。顺便说一句,我知道我可以在运行时测试这个。然而,这是为我们编写的代码生成器,所以我没有实际的类型。我只知道一个列是string
或int32
(等等)。
除了Nullable<T>
本身之外,所有值类型都可以用于可空类型 - 即所有派生自System.ValueType
的类型(包括enum
!)。
原因是Nullable
的声明类似于:
struct Nullable<T> where T : struct, new() { … }
它可以是任何值类型,包括结构体,但不能是引用类型,因为这些本质上已经是可空的。
是: Int32 double DateTime CustomStruct 等等。
否: string Array CustomClass 等等。
有关更多信息,请参见MSDN:http://msdn.microsoft.com/en-us/library/2cf62fcy(v=VS.80).aspx
Nullable<T>
的50%。;p - Marc Gravell任何数据类型都可以是可空的。 可空对你有用,因为普通 int 不可空,所以转换成可空 int 是必要的。
Nullable<int[]> 无法工作,因为 int[] 已经是可空类型。
Nullable 不支持已经是可空类型的类型。
请注意,只有当类型不是可空类型时才需要将其转换为可空类型。
值类型不可为空,值类型包括 int、float、double、long 等,以及你创建的结构体。
而引用类型(例如类)已经是可空的。
你可以使用 ? 运算符将类型变为可空类型。 请注意,即使这并不是一个好的做法,如果你在已经是可空类型的类型上使用问号运算符,它也不会引发错误。
int? myNullableVar = null;
int[]? MyNullableArr = null; //not necessary but does not raise an error
Nullable<byte[]>
不行,因为数组是引用类型(即使它们包含的类型是值类型)。请注意,这意味着您可以执行byte[] b = null
。 - fearofawhackplanet