C#是可空的的基本类型(即 bool?)只要别名为它们相应的 Nullable<T> 类型或者是有差别的两个人?

有帮助吗?

解决方案

如果你看一下在使用IL Ildasm, 你会发现他们两个编译下 Nullable<bool>.

其他提示

之间没有差别 bool? b = nullNullable<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<>, 它将给它的这种能力。此外,访问方法的价值变动的额外性 HasValueValue.

但是这个问题: Nullable<bool>bool? 是的别名。

没有,没有区别。在摘要:

系统。布尔->有效的值:真的,假

bool->的别名的系统。布尔

Nullable<bool> ->的有效价值观:真的,false,null

bool?->的别名Nullable<bool>

希望这会有所帮助。

空元的只是普通的元的包裹在可空的.任何出现相反的是只编译器和语法糖。

没有差别。看看这里: http://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx

"法T?是的缩写可空,T是一个值的类型。这两种形式是可以互换的。"

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top