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

Ala*_*an2 4 c#

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

public Nullable<bool> Correct  { get; set; }
public Nullable<bool> Response { get; set; }
Run Code Online (Sandbox Code Playgroud)

我编码:

public bool? Correct  { get; set; }
public bool? Response { get; set; }
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我这两者之间是否有任何区别.我还没有见过Nullable<bool>以前,我不确定为什么它不只是创造一个"布尔".

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

Ike*_*uda 5

"可以为Nullable赋值true true或null.当您处理包含可能未赋值的元素的数据库和其他数据类型时,将null赋值给numeric和Boolean类型的能力尤其有用.例如,数据库中的布尔字段可以存储值true或false,或者可能是未定义的."

可空类型

  • 这并不能解释OP的情况 - 我怀疑这是一种误诊. (3认同)

Ehs*_*san 5

有人可以告诉我这两者之间是否有任何区别.我以前没见过Nullable,我不确定为什么它不只是创造一个"bool"

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

为什么需要系统为Nullable

这是因为它被用作type.并且类型需要在namespace.

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

Nullable表示value type可以赋值为null并且它位于命名空间中System.

此外,因为它可以被指定为null,因此您可以检查它是否具有这样的值

if(Correct.HasValue)
{
  //do some work
}
Run Code Online (Sandbox Code Playgroud)