27

我正在编写一个应用程序,其中定义了很多布尔类型的属性:

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

如您所见,我一开始就设置kajmaktrue..-原因无关紧要-。(您可能知道 bool 变量的默认值为false)。

现在,有没有办法将 a 的默认值更改booltrue?所以我会写:

private bool kajmak; //kajmak = true

代替

private bool kajmak = true;

我能做些什么来实现这一目标?

4

7 回答 7

73

C Sharp 6.0 引入了一种很好的新方法来做到这一点:

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

这相当于旧的方式:

    private bool _yourBool = true;

    public bool YourBool 
    {
        get { return _yourBool; }
        set { _yourBool = value; }
    }

看到这篇文章http://blogs.msdn.com/b/csharpfaq/archive/2014/11/20/new-features-in-c-6.aspx

于 2016-01-11T10:51:08.897 回答
26

因为布尔值默认为假,所以我在我的名字中使用正数形式,如IsInitializedHasSomething,我希望默认为假,直到我明确设置它们。

如果你发现你需要一些东西默认为真,也许你需要重命名你的变量,以便在默认为假时更有意义。

于 2012-11-09T15:01:57.447 回答
10

在役:

public bool Kajmak { get; set; } = true;
于 2017-07-10T14:04:50.343 回答
4

不,无法更改 .NET 分配的默认值。您最好的选择是在私有成员中分配适当的默认值:

private book kajmak = false;

或者像你应该的那样使用构造函数并在那里分配类默认值:

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

    public book Kajmak { get; set; }
}
于 2012-11-09T15:01:13.203 回答
0

不,不可能更改默认值。如果您可以更改默认值,它将不再是默认值;)。

但是要将默认值设置为 null,您可以使用以下命令:

bool? kajmak;

但这不是你想要的...

于 2012-11-09T15:01:11.663 回答
0

在尝试做类似事情的过程中,一位同事向我启发了布尔?类型。它可以是 true、false 或 null,并且不反对位于此类比较器的左侧。这并不能回答您如何将 bool 默认为 true 的问题,但确实解决了您希望变量在默认情况下可定义为 true 的概念问题。

我之所以发帖,是因为这是我搜索时的最高结果,而且这些信息对我有帮助。希望它会是其他找到此页面的人。

于 2015-10-29T22:21:48.483 回答
-2

您可以创建一个默认为 false 的类 myBool 以及从 bool 到您的类的隐式转换。

于 2012-11-09T15:05:43.550 回答