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

Таким образом, я объявляю переменную на одном из моих классов. Я хочу, чтобы это по умолчанию было «null», а не false. Должен ли я просто сделать это nullable логическим? Или есть лучший способ сделать это?Значение по умолчанию для bool в C#

ответ

15

Нужно ли мне просто сделать это нулевым логическим?

Да.

Или есть лучший способ сделать это?

No.

Вы можете добиться этого с

public bool? PrepaymentCalculating { get; set; } 
0

BOOL не может быть пустым. Значение по умолчанию, вероятно, неверно (но не цитируйте меня на этом).

Если вы хотите, чтобы он был нулевым, то да, вы должны объявить его как nullable.

+1

Да, значение по умолчанию - false. – Craigt

+1

Да, значением по умолчанию является 'false'. Подумайте о нулевом значении false (и не равном нулю для одного) и обратите внимание, что значение по умолчанию для типов значений просто нули в структуре. См. Также http://msdn.microsoft.com/en-us/library/83fhsxwc.aspx. – jason

1

Если вы хотите, чтобы он был пустым, вам необходимо сделать его типом с нулевым значением.

5
public bool? PrepaymentCalculating { get; set; } 

сделает его недействительным. Читайте об этом here

1

Как и все остальные сказали, но я думал, что я хотел бы добавить, что ваша цель здесь? Я не часто хочу, чтобы выставил nullable bool, так как это означает, что все, что использует это свойство, должно учитывать возможное значение NULL.

Но иногда я хочу знать, была ли она инициализирована или нет в заданном контексте, а если нет, то используйте значение из другого места (например, для значений свойств каскада). В этом случае вы можете использовать такой шаблон:

public bool PrepaymentCalculating { 
    get { 
     if (_PrepaymentCalculating != null) { 
      return (bool)_PrepaymentCalculating; 
     } else { 
      return somethingElse; // bool 
     } 
    } 
    set { 
     _PrepaymentCalculating = value; 
    } 
} protected bool? _PrepaymentCalculating =null; 
Смежные вопросы