更改布尔值的默认值
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】:因为布尔值默认为假,所以我在我的名字中使用正数形式,如IsInitialized
、HasSomething
等,在我明确设置它们之前我希望默认为假。
如果你发现你需要某些东西默认为真,也许你需要重命名你的变量,以便在默认为假时更有意义。
【讨论】:
我也一直这样做,然后当我遇到一个我希望积极形式默认为真的场景时,我意识到这是一种愚蠢的论点。这基本上颠倒了这个论点:) 好吧,你总是可以在你的构造函数中将它们设置为 true。 :)【参考方案6】:没有。无法更改 .NET 分配的默认值。您最好的选择是在私有成员中分配适当的默认值:
private book kajmak = false;
或者像你应该的那样使用构造函数并在那里分配类默认值:
public class SomeClass
public SomeClass()
Kajmak = false;
public book Kajmak get; set;
【讨论】:
【参考方案7】:不,不可能更改默认值。如果您可以更改默认值,它将不再是默认值;)。
但是要将默认值设置为 null,您可以使用:
bool? kajmak;
但这不是你想要的......
【讨论】:
以上是关于更改布尔值的默认值的主要内容,如果未能解决你的问题,请参考以下文章