是否有任何差异之间的类型?和Nullable<type>?
题
C#是可空的的基本类型(即 bool?
)只要别名为它们相应的 Nullable<T>
类型或者是有差别的两个人?
解决方案
如果你看一下在使用IL Ildasm, 你会发现他们两个编译下 Nullable<bool>
.
其他提示
之间没有差别 bool? b = null
和 Nullable<bool> b = null
.的 ?
只是C#编译器法糖。
访问的价值bool?你需要做到以下几点:
bool? myValue = true;
bool hasValue = false;
if (myValue.HasValue && myValue.Value)
{
hasValue = true;
}
注意你们不能就这样做:
if (myValue)
{
hasValue = true;
}
我很惊讶没有人去来源(C#规范)。从§4.1.10Nullable种类型:
一个可空类型的书面T?, T是基础型的。这种语法是速记系统。Nullable<T>和这两种形式可以互换使用。
因此,没有,没有任何差之间的两种形式。(假定你没有任何其他类型的所谓的 Nullable<T>
在任何名字空间的使用。)
一个 Nullable<T>
是一个结构组成的T和一位标志表明是否T是有效的。一个 Nullable<bool>
有三个可能值:真的,假和空。
编辑: 啊,我错过了这一事实,这一问题的标记后"bool"实际上是的一部分类型的名称,而不是一个指标,你们问一个问题:).回答你的问题,那么,是"是的,C# bool?
仅仅是个别名 Nullable<bool>
".
一个 bool
是一个值的类型,因此它不能包含空值。如果你包裹的任何价值的类型 Nullable<>
, 它将给它的这种能力。此外,访问方法的价值变动的额外性 HasValue
和 Value
.
但是这个问题: Nullable<bool>
和 bool?
是的别名。
没有,没有区别。在摘要:
系统。布尔->有效的值:真的,假
bool->的别名的系统。布尔
Nullable<bool> ->的有效价值观:真的,false,null
bool?->的别名Nullable<bool>
希望这会有所帮助。
空元的只是普通的元的包裹在可空的.任何出现相反的是只编译器和语法糖。
没有差别。看看这里: http://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx
"法T?是的缩写可空,T是一个值的类型。这两种形式是可以互换的。"