2011-02-14 157 views
6
public bool PrepaymentCalculating { get; set; } 

所以我在这样的类中声明了一个变量。我想这个默认为'null'而不是false。我只需要使这是一个可空布尔值?还是有更好的方法来做到这一点?c中bool的默认值#

回答

15

我只需要使这是一个可为null的布尔值?

是的。

还是有更好的方式来做到这一点?

您可以

public bool? PrepaymentCalculating { get; set; } 
5

尝试

public bool? PrepaymentCalculating { get; set; } 

这里有Nullable Types

0

布尔后不能为空。默认值可能是错误的(但不要在此引用我)。

如果你希望它是空,然后是你必须把它声明为空。

+1

是的,默认值为false。 – Craigt 2011-02-14 19:56:20

1

如果你希望它是零,那么你需要使它可空类型。

5
public bool? PrepaymentCalculating { get; set; } 

将使其可以为空。阅读关于它here

1

像其他人一样说,实现这一点,但我想我会添加,什么这是你的目的是什么?我不经常想要暴露为可空的布尔值,因为这意味着所有使用此属性的值必须考虑可能的空值。

但有时我想知道,如果它是在特定情况下被初始化或没有,如果没有,则使用来自其他地方的值(例如级联属性值)。在这种情况下,您可能想要使用如下模式:

public bool PrepaymentCalculating { 
    get { 
     if (_PrepaymentCalculating != null) { 
      return (bool)_PrepaymentCalculating; 
     } else { 
      return somethingElse; // bool 
     } 
    } 
    set { 
     _PrepaymentCalculating = value; 
    } 
} protected bool? _PrepaymentCalculating =null;