Я знаком с этим новым сахаром синтаксиса:
public string Name { get; set; }
Но что, если я был методом set той переменной, чтобы иметь своего рода проверку. Например, я хочу преобразовать всю строку, которая, как предполагается, Установлена на все нижние регистры.
public string Name
{
get;
set
{
????
}
}
Вам понадобится опорное поле для getter и setter (вы не можете иметь частично автоматическое свойство):
private string name;
public string Name
{
get
{
return name;
}
set
{
// do validation or other stuff
name = value.ToLower();
}
}
Вы не можете определить частично автоматическое свойство. Вам придется действовать по старинке: определить вспомогательное поле и самостоятельно реализовать логику получения и установки.
private string _name;
public string Name
{
get {return _name;}
set
{
_name = value.ToLower();
}
}
Тогда вы не сможете использовать автоматически созданную функцию получения / установки:
string _name;
public string Name {
set { _name = value.ToLower(); }
set { return _name; }
}
общедоступная строка Имя {get; установленный; }
Они называются автоматически реализуемыми свойствами. В C # 3 и более поздних версиях вы можете использовать этот синтаксис для свойства. Но если вы хотите выполнить какие-либо операции со значением перед установкой, это не поможет. Еще один недостаток: вы должны использовать как set, так и get, вы не можете объявить только getter. Альтернативный вариант - сделать установщик закрытым. В вашем случае вам придется использовать старую версию свойств.
private string _name;
public string Name
{
get {return _name;}
set
{
//do any operation
_name = value.ToLower();
}
}