c#中的布尔属性

sla*_*dau 27 .net c# boolean

这可能是一个愚蠢的问题,但下面的属性,是否会出现这样的情况,只是得到它将导致异常?

就像我做了类似的事情bool value = this.BatchValuation;- 但我还没有设置BatchValuation,它会设置valuenull,还是会导致异常?

public bool BatchValuation { get; set; }
Run Code Online (Sandbox Code Playgroud)

Eri*_*ert 49

这可能是一个愚蠢的问题

它不是.

在下面的属性中,是否会出现这样的情况?

可能,是的.例如,另一个线程可以在获取该属性的过程中中止您的线程; 这似乎是属性getter抛出的异常.或者,您可能在调用属性时立即耗尽堆栈空间,并且可能抛出堆栈外异常.或者,当您第一次调用该属性时,抖动可能会启动并尝试为生成的代码分配虚拟内存,但是您将全部脱离虚拟地址空间,因此可能会引发内存不足异常.

这些都非常不可能,但它们都是可能的.你问是否会有这样的情况,而不是如果它是可能的.

如果我还没有设置BatchValuation,它会将值设置为null,还是会导致异常?

无论; 它将默认为false.布尔人不可空.

  • 这确实是我想问的,所以你得到了答案。 (3认同)

Bro*_*ass 26

如果您没有专门设置它们,则布尔值默认为false.所以不会有任何例外,该属性只会返回false.

请记住,这是我们正在讨论的值类型,只能将参考类型的变量设置为null.值类型有一个默认值,对于数字类型为零,对于布尔值为false.

另请参见默认值表