2009-07-22 2 views
2

Я программировал так долго его трудно идти в ногу с изменениями языка иногда ...Является ли это правильным синтаксисом для свойств auto?

Является ли это на самом деле хорошо, чтобы установить свойства, как это после .net v2

public string LocaleName 
    { 
     get; 
     set; 
    } 

Не требует внутренней поле? Похоже, компилятор заботится об этом в последнее время?

+0

Вы можете изменить свой вопрос, чтобы указать, что вы спрашиваете, какую версию C# вы установили. – Kredns

+0

, что является правильным, и вы можете ограничить их доступность, если это необходимо. public string LocaleNam {get; private set;} –

ответ

10

Да, это новая функция в C# 3.0

+0

Так что я программирую на C# v3, но используя .net v2 framework? –

+1

@JL, да, это функция * C# *, которая не требует какой-либо конкретной версии фреймворка. :) –

+2

Это скорее компилятор с Visual Studio 2008. Если вы используете VS2005 с расширениями .NET 3.0, вы не получите эту функцию. –

3

Это хорошо до тех пор, пока вы не должны делать какие-либо проверки, чтобы увидеть, если значения установлены правильно.

Вы можете взглянуть на C# Specification.

1

Да, это называется 'auto implemented properties'. Компилятор создаст резервное поле для вашего имущества.

Поскольку «автоматически реализованные свойства» являются «компилятором C#», вы можете использовать их в своем коде и целевой платформе .NET Framework 2.0, если вы используете компилятор C# 3.0 для компиляции кода.

0

Да, они называются automatic properties, и будет генерировать поле подкладочный за кулисами.

0

Да. В C# 3.0 и более поздних версиях автоматически реализованные свойства упрощают декларацию свойств, когда в аксессуарах свойств не требуется дополнительная логика. Они также позволяют клиентскому коду создавать объекты. Когда вы объявляете свойство, как показано в следующем примере, компилятор создает личное, анонимное поле поддержки может быть доступно только через get и set accessors свойства.

3

Только так вы знаете, вы можете сделать что-то вроде этого:

public string MyString 
{ 
    get; 
    private set; 
} 

который дает публичный аксессор, но частный сеттер.

Смежные вопросы