Задайте значение по умолчанию для свойства
Можно ли установить значение по умолчанию без тела свойства? Предпочтительно с аннотациями.
[SetTheDefaultValueTo(true)]
public bool IsTrue { get; set; }
[SetTheDefaultValueTo(false)]
public bool IsFalse { get; set; }
public void Something()
{
var isTrue = this.IsTrue;
var isFalse = this.IsFalse;
}
Ответы
Ответ 1
Нет, нет встроенной возможности устанавливать значение свойства с метаданными. Вы могли бы использовать какую-то фабрику, которая создала бы экземпляры класса с отражением, а затем могла бы установить значения по умолчанию. Но вкратце, вам нужно использовать конструкторы (или установщики полей..., которые поднимаются в конструкторе.), Чтобы установить значения по умолчанию.
Если у вас есть несколько перегрузок для вашего конструктора, вы можете посмотреть цепочку конструктора.
Используя С# 6+, вы можете сделать что-то вроде этого...
public string MyValue { get; set; } = "My Default";
О, это становится веселее, потому что люди даже просили что-то вроде этого...
// this code won't compile!
public string MyValue {
private string _myValue;
get { return _myValue ?? "My Default"; }
set { _myValue = value; }
}
... преимущество в том, что вы можете контролировать область действия поля, чтобы она была доступна только в коде свойства, поэтому вам не нужно беспокоиться о том, что что-то еще в вашем классе играет с состоянием, не используя getter/setter ,
Ответ 2
Назначьте значение свойства по умолчанию в конструкторе класса.
class MyClass
{
public MyClass()
{
IsTrue = true;
IsFalse = false;
}
public bool IsTrue { get; set; }
public bool IsFalse { get; set; }
[...]
public void Something()
{
var isTrue = this.IsTrue;
var isFalse = this.IsFalse;
}
}
Ответ 3
Если вы используете С# 5 и ранее, вы должны сделать это в конструкторе.
но поскольку С# 6.0, включена возможность инициализаторов свойств auto, а синтаксис:
public int myage { get; set; } = 33;
Ответ 4
Старый поток.
Похоже, Microsoft слышала, и эта функция доступна в .Net Framework 4.6+ (С# 6+)
Вы можете использовать его как
public string MyValue { get; set; } = "My Default";
Ответ 5
В этом конкретном примере вы можете:
public bool IsFalse { get; set; }
public bool IsTrue
{
get { return !IsFalse; }
set { IsFalse = !value; }
}
public void Something()
{
var isTrue = this.IsTrue;
var isFalse = this.IsFalse;
}
Но, вообще говоря, нет.