Nullable <bool>和bool有什么区别?</bool>

时间:2013-08-01 06:01:35

标签: c#

当我对课程进行逆向工程时,我得到以下内容:

public Nullable<bool> Correct  { get; set; }
public Nullable<bool> Response { get; set; }

我编码:

public bool? Correct  { get; set; }
public bool? Response { get; set; }

有人可以告诉我这两者之间是否有任何区别。我以前没见过Nullable<bool>而且我不确定为什么它不只是创造一个“bool”。

注意:我将编码更改为bool?回应Jon的评论

5 个答案:

答案 0 :(得分:5)

“可以为Nullable赋值true true或null。在处理包含可能未赋值的元素的数据库和其他数据类型时,为数值和布尔类型赋值null的能力特别有用。例如,数据库中的布尔字段可以存储值true或false,或者可能是未定义的。“

Nullable Types

答案 1 :(得分:5)

  

有人可以告诉我这两者之间是否有任何区别。一世   之前没见过Nullable,我不知道为什么会这样   不只是创造一个“布尔”

技术上Nullable和bool没什么区别?无论你写什么,他们都会编译成IL的Nullable 。所以没有区别。的?只是C#编译器语法。

  

为什么需要Nullable系统

这是因为它被用作type。类型需要在namespace

但是bool和bool有区别吗?。由于bool是一个简单的值类型,不能赋值为null,而你可以为bool赋值?

Nullable表示可以指定为空的value type,它位于名称空间System中。

此外,因为可以将其指定为null,因此您可以检查它是否具有此值

if(Correct.HasValue)
{
  //do some work
}

答案 2 :(得分:2)

Nullable<bool>bool 之间存在差异。

public Nullable<bool> Correct { get; set; } // can assign both true/false and null
Correct = null;  //possible 

,而

在你的情况下,你不能拥有它

public bool Correct { get; set; } //can assign only true/false
Correct = null;  //not possible

也许之前编码的人可能没有接触到bool? dataType。

  

System.Nullable<bool>相当于bool?

更新: Nullable<bool>bool?之间没有区别

答案 3 :(得分:2)

Nullable<bool>bool?是等效的(“?”后缀是语法糖)。 Nullable<bool>表示除了典型的bool值之外:true和false, 有一个第三个​​值: null

http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.80).aspx   http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx

如果您处理不确定的值,则空值可能很有用,例如:在一些 如果有任何响应,您无法判断实例是否正确 已被给予;例如在你的情况下

  // true  - instance is correct
  // false - instance is incorrect
  // null  - additional info required
  public bool? Correct { get; set; }
  // true  - response was given 
  // false - no response
  // null  - say, the response is in the process
  public bool? Response { get; set; }

答案 4 :(得分:1)

没有区别。

提示:Nullable<Nullable<bool>> n; // not allowed

Source msdn Nullable Types