2014-09-23 78 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