C# bool的默认值(c)#

C# bool的默认值(c)#,c#,.net,C#,.net,所以我在我的一个类上声明了一个变量。我希望它默认为“null”,而不是false。我需要把它变成一个可为空的布尔值吗?或者有更好的方法吗?试试看 public bool PrepaymentCalculating { get; set; } 这里有一篇关于bool的帖子,bool不能为空。默认值可能为false(但不要引用我的话) 如果希望它为null,则必须将其声明为可为null。如果希望它为null,则需要将其设置为可为null的类型 public bool? PrepaymentCalc

所以我在我的一个类上声明了一个变量。我希望它默认为“null”,而不是false。我需要把它变成一个可为空的布尔值吗?或者有更好的方法吗?

试试看

public bool PrepaymentCalculating { get; set; }

这里有一篇关于bool的帖子,bool不能为空。默认值可能为false(但不要引用我的话)


如果希望它为null,则必须将其声明为可为null。

如果希望它为null,则需要将其设置为可为null的类型

public bool? PrepaymentCalculating { get; set; }
将使其可为空。读一读

我需要把它变成一个可为空的布尔值吗

还是有更好的方法

没有

您可以使用

public bool? PrepaymentCalculating { get; set; }

就像其他人说的,但我想补充一句,你来这里的目的是什么?我并不经常想公开一个可为null的bool,因为这意味着使用此属性的所有内容都必须考虑一个可能的null值

但有时我想知道它是否已在给定上下文中初始化,如果未初始化,则使用其他地方的值(例如,级联属性值)。在这种情况下,您可能希望使用如下模式:

public bool? PrepaymentCalculating { get; set; }

是,默认值为
false
。将零视为false(非零表示1),并注意值类型的默认值只是将结构置零。另见。
public bool PrepaymentCalculating { 
    get {
        if (_PrepaymentCalculating != null ) {
            return (bool)_PrepaymentCalculating;
        } else {
            return somethingElse; // bool
        }
    }
    set {
      _PrepaymentCalculating = value;
    }
} protected bool? _PrepaymentCalculating =null;