更改布尔值的默认值

Posted

技术标签:

【中文标题】更改布尔值的默认值【英文标题】:Change The Default Value of Boolean 【发布时间】:2012-10-29 21:51:39 【问题描述】:

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

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

如您所见,我在开头将kajmak 设置为true..-原因无关紧要-。 (您可能知道 bool 变量的 默认 值为 false

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

private bool kajmak; //kajmak = true

而不是

private bool kajmak = true;

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

【问题讨论】:

我不相信你可以改变这一点。继续做你正在做的事情。 别做,麻烦多于值得,别想去做。 即使你能......你会得到什么? 很好奇为什么这被否决了。诚然,想要这样做是一种不好的做法,但问题本身很好。 查看我对新的 C Sharp 6.0 方法的回答 【参考方案1】:

在役:

public bool Kajmak  get; set;  = true;

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

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

【讨论】:

开销太大,不要这样做【参考方案5】:

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

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

【讨论】:

我也一直这样做,然后当我遇到一个我希望积极形式默认为真的场景时,我意识到这是一种愚蠢的论点。这基本上颠倒了这个论点:) 好吧,你总是可以在你的构造函数中将它们设置为 true。 :)【参考方案6】:

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

private book kajmak = false;

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

public class SomeClass

    public SomeClass()
    
        Kajmak = false;
    

    public book Kajmak  get; set; 

【讨论】:

【参考方案7】:

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

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

bool? kajmak;

但这不是你想要的......

【讨论】:

以上是关于更改布尔值的默认值的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:迁移更改列的默认值(布尔值)

MS Access 布尔字段和默认 (True) 值

如何更改表以添加具有当前日期默认值的新列日期?

如何在不更改 matplotlib 默认值的情况下使用 seaborn?

如何根据决策(布尔)字段在现有表单的视图中设置默认值?

如何更改 lambda 的默认参数值?