2012-11-09 33 views
11

的默認值我正在寫一個應用程序,在那裏我有相當定義布爾型的很多性質:更改布爾

private bool kajmak = true; 
    public bool Kajmak 
    { 
     get { return kajmak ; } 
     set { kajmak = value; FirePropertyChanged(() => Kajmak); } 
    } 

正如你看到的,我設置kajmaktrue開頭..-原因是無關緊要的。 (您可能知道,bool變量的默認值的值爲false)。

現在,有沒有辦法,將bool的默認值更改爲true?所以,我會寫:

private bool kajmak; //kajmak = true 

代替

private bool kajmak = true; 

我能做什麼來實現這一目標?

+2

我不相信你可以改變這一點。只要繼續做你正在做的事情。 –

+1

不要這樣做,它比它的價值更麻煩,甚至不考慮這樣做。 – Davio

+2

即使你可以......你會得到什麼? –

回答

17

因爲布爾值都是假的默認情況下,我在我的名字中使用了正確的形式,比如IsInitializedHasSomething等,我想在默認情況下爲false,直到我明確設置它們。

如果您發現默認情況下您需要某些設置爲true,則可能需要重命名您的變量,以便在默認設置爲false時更有意義。

+0

我一直這樣做,然後我意識到這是一個愚蠢的理由,當我遇到一個情景,我想積極的形式是真實的默認。這基本上顛倒了這個論點:) –

+1

好吧,你可以隨時在你的構造函數中將它們設置爲true。 :) – Davio

0

不,不可能更改默認值。如果你可以改變默認值,它不會再是默認值了)。

但設置默認值設置爲null,你可以這樣做:

bool? kajmak; 

但是,這不是你想要的...

3

號有沒有辦法改變分配默認值由.NET。最好的辦法是要麼分配的私有成員適當的默認:

private book kajmak = false; 

或者使用構造像你應該和分配類的默認值有:

public class SomeClass 
{ 
    public SomeClass() 
    { 
     Kajmak = false; 
    } 

    public book Kajmak { get; set; } 
} 
-2

您可以創建一個默認爲false的類myB​​ool,以及從bool到您的類的隱式轉換。

+0

開銷太多,不要這樣做 – user230910

0

在試圖做類似的事情的過程中,一位同事給我啓發了布爾?類型。它可以是true,false或null,並且不反對在這種比較器的左側。這並不能回答你如何將bool默認爲true的問題,但是解決了你想讓你的變量默認爲true的概念性問題。

我只發佈,因爲這是我搜索時的最高結果,這些信息對我很有幫助。希望它會發現給那些找到這個頁面的人。

0

在服務:

public bool Kajmak { get; set; } = true;