Каков синтаксис в C# для создания методов set и методов считывания?

Я знаком с этим новым сахаром синтаксиса:

public string Name { get; set; }

Но что, если я был методом set той переменной, чтобы иметь своего рода проверку. Например, я хочу преобразовать всю строку, которая, как предполагается, Установлена на все нижние регистры.

public string Name
{
   get;
   set 
   {
      ????
   }
}
5
задан 9 May 2010 в 16:16
поделиться

5 ответов

Вам понадобится опорное поле для getter и setter (вы не можете иметь частично автоматическое свойство):

private string name;
public string Name
{
   get
   {
     return name;
   }
   set 
   {
     // do validation or other stuff
     name = value.ToLower();
   }
}
11
ответ дан 18 December 2019 в 08:27
поделиться

Вы не можете определить частично автоматическое свойство. Вам придется действовать по старинке: определить вспомогательное поле и самостоятельно реализовать логику получения и установки.

4
ответ дан 18 December 2019 в 08:27
поделиться
private string _name;

public string Name
{
   get {return _name;}
   set 
   {
     _name = value.ToLower();
   }
}
3
ответ дан 18 December 2019 в 08:27
поделиться

Тогда вы не сможете использовать автоматически созданную функцию получения / установки:

string _name;

public string Name {
    set { _name = value.ToLower(); }
    set { return _name; }
}
1
ответ дан 18 December 2019 в 08:27
поделиться

общедоступная строка Имя {get; установленный; } Они называются автоматически реализуемыми свойствами. В C # 3 и более поздних версиях вы можете использовать этот синтаксис для свойства. Но если вы хотите выполнить какие-либо операции со значением перед установкой, это не поможет. Еще один недостаток: вы должны использовать как set, так и get, вы не можете объявить только getter. Альтернативный вариант - сделать установщик закрытым. В вашем случае вам придется использовать старую версию свойств.

private string _name;
public string Name
{
   get {return _name;}
   set 
   {
      //do any operation
     _name = value.ToLower();
   }
}
0
ответ дан 18 December 2019 в 08:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: