在C#中,可以为空的原始类型(即bool?)只是它们对应Nullable<T>类型的别名,还是两者之间存在差异?
Mar*_*ram 18
要访问bool的值?你需要做以下事情:
bool? myValue = true;
bool hasValue = false;
if (myValue.HasValue && myValue.Value)
{
hasValue = true;
}
Run Code Online (Sandbox Code Playgroud)
请注意,你不能只做:
if (myValue)
{
hasValue = true;
}
Run Code Online (Sandbox Code Playgroud)
我很惊讶没有人去过源(C#规范).从§4.1.10可为空类型:
可空类型写为T ?,其中T是基础类型.此语法是System.Nullable <T>的简写,这两种形式可以互换使用.
所以,不,这两种形式没有任何区别.(假设您没有Nullable<T>在您使用的任何名称空间中调用任何其他类型.)
A Nullable<T>是由T和位标志组成的结构,指示T是否有效.A Nullable<bool>有三个可能的值:true,false和null.
编辑:啊,我错过了"bool"之后的问号实际上是类型名称的一部分,而不是你问一个问题的指示:).那么,你的问题的答案是"是的,C#bool?只是一个别名Nullable<bool>".