当我对课程进行逆向工程时,我得到以下内容:
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的评论
答案 0 :(得分:5)
“可以为Nullable赋值true true或null。在处理包含可能未赋值的元素的数据库和其他数据类型时,为数值和布尔类型赋值null的能力特别有用。例如,数据库中的布尔字段可以存储值true或false,或者可能是未定义的。“
答案 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)