类型之间有什么区别吗?和可空的?
时间:2020-03-05 18:51:26 来源:igfitidea点击:
在Care中,可为空的原始类型(即bool?
)只是其对应的Nullable <T>
类型的别名,还是两者之间有区别?
解决方案
回答
" Nullable <T>"是由T和指示T是否有效的位标志组成的结构。 Nullable <bool>具有三个可能的值:true,false和null。
编辑:啊,我错过了一个事实,即"布尔"之后的问号实际上是类型名称的一部分,而不是我们在问问题的指示符:)。那么,对问题的答案是"是的,C`bool只是" Nullable <bool>"的别名"。
回答
Null基元只是包装在Nullable中的常规基元。相反的任何外观都只是编译器和语法糖。
回答
"布尔"是一种值类型,因此它不能包含NULL值。如果用" Nullable <>"包装任何值类型,它将赋予该功能。此外,通过其他属性" HasValue"和" Value"来更改对值的访问方法。
但要问的是:Nullable <bool>
和bool?
是别名。
回答
布尔之间没有区别吗? b = null和
Nullable <bool> b = null`。 "?"只是Ccompiler语法糖。
回答
要获取布尔值?我们需要执行以下操作:
bool? myValue = true; bool hasValue = false; if (myValue.HasValue && myValue.Value) { hasValue = true; }
请注意,我们不能只是这样做:
if (myValue) { hasValue = true; }
回答
如果使用Ildasm查看IL,则会发现它们都编译为Nullable <bool>
。
回答
不,没有区别。总之:
System.Boolean->有效值:true,false
bool-> System.Boolean的别名
Nullable <bool>->有效值:true,false,null
笨蛋? -> Nullable <bool>的别名
希望这可以帮助。