Правильный синтаксис для свойств C # - PullRequest
1 голос
/ 14 июня 2011

В документации MSDN используется следующий синтаксис:

// A read-write instance property:
public string Name
{
    get { return name; }
    set { name = value; }
}

Однако следующий код автоматически генерируется VS2010 для нового библиотечного класса:

public string Name
{
    get
    {
        String s = (String)ViewState["Name"];
        return ((s == null) ? String.Empty : s);
    }

    set
    {
        ViewState["Name"] = value;
    }
}

Когда целесообразно использовать синтаксис ViewState над более коротким примером, показанным в MSDN?

Ответы [ 4 ]

8 голосов
/ 14 июня 2011

ViewState - это функция серверных серверных элементов управления ASP.Net, которая сохраняет информацию во всех обратных передачах.

Для простых свойств, которых нет в серверном элементе управления, следует использовать автоматически реализованное свойство :

public string Name { get; set; }
2 голосов
/ 14 июня 2011

Первый хранит значение в поле частного свойства внутри класса, а второй (пытается) сохранить фактическое значение в ViewState.

Таким образом, второе возможно только тогда, когда вы говорите об элементах управления ASP с включенным viewstate, что является узким подмножеством всех возможных случаев.

1 голос
/ 14 июня 2011

Свойство C # - это просто кусочек синтаксического сахара. Эта структура

public Foo MyValue { get ; private set ; }

точно так же, как если бы вы закодировали:

private Foo _myValue ;
public Foo
{
  get
  {
    return _myValue ;
  }
  private set
  {
    this._myValue = value ;
  }
}

В любом случае код, который фактически генерируется, выглядит примерно так:

private Foo _myValue ;
public Foo MyValue_get()
{
  return this._myValue ;
}
private Foo MyValue_set( Foo value )
{
  this._MyValue = value ;
}

Если вы решите создать свой собственный метод получения / установки, то, что происходит в теле модуля получения / установки, полностью зависит от вас. Здесь нет «правильного» или неправильного: это зависит от потребностей вашей программы.

Что касается ViewState, ViewState является частью ASP.Net. Он так или иначе не имеет отношения к свойствам. В вашем примере просто выставляется элемент ViewState как публичное свойство чтения / записи.

0 голосов
/ 14 июня 2011

Разница между ними заключается в том, что одно из них - это просто старое свойство C #, обеспечивающее доступ к (наиболее вероятной) частной области видимости в вашем классе.

Другой возвращает значение, восстановленное из ViewState ASP.NET.

Это две разные вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...