【问题标题】: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 方法的回答

标签: c# boolean default


【解决方案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;
          

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

          【讨论】:

            猜你喜欢
            • 2018-10-04
            • 2014-06-03
            • 2019-09-03
            • 1970-01-01
            • 2021-02-16
            • 1970-01-01
            • 2013-07-05
            • 1970-01-01
            • 2015-01-11
            相关资源
            最近更新 更多