所以我在模型中有这样的bool变量。
bool Foo;
我从服务器接收数据并对其进行反序列化模型对象。因此,服务器数据中没有任何字段被初始化为默认值。 default(bool)
是假的。
但值[{1}}也是我的变量false
的可接受值。那么有没有办法检查它是否从服务器获取值Foo
或其默认值。
我对其他类型也有同样的问题,比如int,double等,它们默认为null。
答案 0 :(得分:15)
在您的位置,我会将Nullable<bool>
(bool?
)用于您的目的。然后你就可以用这种方式检查价值:
bool? Foo;
if(Foo.HasValue)
{
// do something with Foo.Value
}
else
{
// Foo is uninitialized
}
答案 1 :(得分:0)
在我的系统(Microsoft(R)Visual C#编译器版本4.7.3190.0)上,接受的答案不完整:编译器错误。只需要初始化为空变量声明即可。所以:
bool? Foo = null;
if (Foo.HasValue)
{
// do something with Foo.Value
}
else
{
// Foo is uninitialized
}