Изменить значение по умолчанию для Boolean

Я пишу приложение, где у меня довольно много свойств типа Boolean:

    private bool kajmak = true;
    public bool Kajmak
    {
        get { return kajmak ; }
        set { kajmak = value; FirePropertyChanged(() => Kajmak); }
    }

Как вы видите, я установил kajmak в true в начале.. -the причина - nonrelevant-. (Возможно, вы знаете, что значение по умолчанию для переменной bool ложно).

Теперь, есть ли способ изменить значение по умолчанию bool на true? Поэтому я бы написал:

private bool kajmak; //kajmak = true

вместо

private bool kajmak = true;

Что я могу сделать для этого?

Ответ 1

Поскольку по умолчанию логические значения ложны, я использую в своих именах положительные формы, такие как IsInitialized, HasSomething и т. IsInitialized, HasSomething я хочу быть ложными по умолчанию, пока я их явно не установил.

Если вы обнаружите, что по умолчанию вам нужно что-то истинное, возможно, вам нужно переименовать переменную, поэтому имеет смысл, когда значение по умолчанию - false.

Ответ 2

C Sharp 6.0 представил новый новый способ:

 public bool YourBool { get; set; } = true;

Это эквивалентно старому способу:

    private bool _yourBool = true;

    public bool YourBool 
    {
        get { return _yourBool; }
        set { _yourBool = value; }
    }

см. эту статью http://blogs.msdn.com/b/csharpfaq/archive/2014/11/20/new-features-in-c-6.aspx

Ответ 3

Нет. Нет способа изменить значение по умолчанию, назначенное.NET. Лучше всего либо назначить соответствующий дефолт в частном члене:

private book kajmak = false;

Или используйте конструктор, как и вы, и назначьте его по умолчанию:

public class SomeClass
{
    public SomeClass()
    {
        Kajmak = false;
    }

    public book Kajmak { get; set; }
}

Ответ 4

В сервисе:

public bool Kajmak { get; set; } = true;

Ответ 5

Нет, нет возможности изменить значение по умолчанию. Если вы можете изменить значение по умолчанию, оно больше не будет по умолчанию;).

Но чтобы установить значение по умолчанию null, вы можете использовать это:

bool? kajmak;

Но это не то, что вы хотите...

Ответ 6

В процессе попыток сделать что-то подобное, коллега просветил меня до дурака? тип. Он может быть истинным, ложным или нулевым и не возражает против того, чтобы быть на левой стороне такого компаратора. Это не отвечает на ваш вопрос о том, как по умолчанию bool имеет значение true, но решает ли ваша концептуальная проблема того, чтобы ваши переменные были определены как истинные по умолчанию.

Я отправляю сообщение только потому, что это был лучший результат, когда я искал, и эта информация была полезной для меня. Надеюсь, это будут другие, которые найдут эту страницу.

Ответ 7

public book Kajmak { get; set; }=true;

Ответ 8

Вы можете создать класс myBool, который по умолчанию имеет значение false и неявное преобразование из bool в ваш класс.