2014-09-23 48 views
1

所以我有一个像这样的布尔变量在模型中。检查是否一个布尔变量在C#中初始化#

bool Foo; 

我正在从服务器接收数据并对其进行反序列化。所以无论服务器数据中的哪些字段都被初始化为默认值。并且default(bool)是错误的。

但值false也是我的变量Foo的可接受值。那么是否有某种方法来检查它是否从服务器或其默认值获得值false

我也有类似int,double等其他类型的问题,它不默认为null。

+9

你有没有考虑过使用'bool?'? – 2014-09-23 09:30:44

+0

@MarcGravell关于反序列化,如果没有从服务器发送,值是否为空而不是false?只想确认一次。 – PratPor 2014-09-23 10:08:36

+0

是的,如果没有明确指定非空值,则返回null – 2014-09-23 10:12:30

回答

15

在你的地方,我会用你的目的Nullable<bool>bool?)。然后你就可以用这种方法检查数值:

bool? Foo; 

if(Foo.HasValue) 
{ 
    // do something with Foo.Value 
} 
else 
{ 
    // Foo is uninitialized 
} 
+0

太好了。谢谢。我不知道这一点。现在我不得不改变我的整个代码,使这种方式int,double等:( – PratPor 2014-09-23 09:46:31