2012-11-09 77 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;