我正在编写一个应用程序,其中我定义了很多类型为Boolean的属性:
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;
我能做些什么来实现这个目标?
答案 0 :(得分:50)
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
答案 1 :(得分:22)
因为默认情况下布尔值是假的,所以我在我的名字中使用了正面形式,例如IsInitialized
,HasSomething
等。默认情况下,我希望它是假的,直到我明确设置它们为止。
如果您发现默认情况下需要某些内容,可能需要重命名变量,以便在默认值为false时更有意义。
答案 2 :(得分:4)
没有。无法更改.NET分配的默认值。最好的办法是在私有成员中指定适当的默认值:
private book kajmak = false;
或者像你一样使用构造函数并在那里分配类默认值:
public class SomeClass
{
public SomeClass()
{
Kajmak = false;
}
public book Kajmak { get; set; }
}
答案 3 :(得分:2)
在服务中:
public bool Kajmak { get; set; } = true;
答案 4 :(得分:0)
不,不可能更改默认值。如果你可以改变默认值,它将不再是默认值;)。
但是要将default-value设置为null,您可以使用:
bool? kajmak;
但那不是你想要的......
答案 5 :(得分:0)
在尝试做类似的事情的过程中,一位同事开明了我对布尔的看法?类型。它可以是true,false或null,并且不反对位于这样的比较器的左侧。这并没有回答你如何将bool默认为true的问题,但确实解决了你希望你的变量默认为真的概念问题。
我只发帖,因为这是我搜索时的最佳结果,这些信息对我有帮助。希望有人能找到这个页面。
答案 6 :(得分:-2)
您可以创建一个默认为false的myBool类,以及从bool到您的类的隐式转换。