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

Así que declaro una variable en una de mis clases de esa manera. Quiero que este valor predeterminado sea 'nulo' y no falso. ¿Necesitaría simplemente hacer de esto un booleano nullable? ¿O hay una mejor manera de hacer esto?Valor predeterminado para bool en C#

Respuesta

15

¿Tendría que hacer que este sea un booleano anulable?

Sí.

¿O existe una forma mejor de hacerlo?

Usted puede lograr esto con

public bool? PrepaymentCalculating { get; set; } 
5

tratar

public bool? PrepaymentCalculating { get; set; } 

Aquí hay un post en Nullable Types

0

bool no puede ser nulo. El valor predeterminado es probablemente falso (pero no me cites sobre eso).

Si quiere que sea nulo, entonces sí, tiene que declararlo como anulable.

+1

Sí, el valor predeterminado es falso. – Craigt

+1

Sí, el valor predeterminado es 'falso'. Piense en cero para falso (y no es cero para uno) y tenga en cuenta que el valor predeterminado para los tipos de valor simplemente pone a cero la estructura. Ver también http://msdn.microsoft.com/en-us/library/83fhsxwc.aspx. – jason

1

Si quiere que sea nulo, debe convertirlo en un tipo que admite nulos.

5
public bool? PrepaymentCalculating { get; set; } 

lo harán nulo. Lea sobre ello here

1

Como todo el mundo dice, pero pensé que me gustaría añadir, ¿cuál es tu propósito aquí? No es frecuente que quiera exponer un bool nullable, ya que esto significa que todo lo que utiliza esta propiedad debe tener en cuenta un posible valor nulo.

Pero a veces quiero saber si se ha inicializado o no en un contexto determinado, y si no, utilice un valor de otro lugar (por ejemplo, para poner en cascada los valores de las propiedades). En este caso, es posible que desee utilizar un patrón como este:

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