Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp_Prog_Guide.doc
Скачиваний:
16
Добавлен:
16.11.2019
Размер:
6.22 Mб
Скачать

Заметки

К объявлениям неявно типизированных переменных применимы следующие ограничения.

  • var может использоваться, только если локальная переменная объявлена и инициализирована в одном операторе; переменная не может быть инициализирована значением NULL.

  • var не может использоваться в полях в области действия класса.

  • Переменные, объявленные с помощью var, не могут использоваться в выражении инициализации. Другими словами, var v = v++; вызывает ошибку времени компиляции.

  • В одном операторе нельзя инициализировать несколько неявно типизированных переменных.

  • Если тип с именем var находится в области действия, при попытке инициализировать локальную переменную с var возникнет ошибка времени компилятора.

Инициализация анонимного типа является единственным сценарием, когда локальная переменная должна быть явно типизирована с var. Дополнительные сведения см. в разделе Анонимные типы.

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

Ключевое слово var удобно, когда определенный тип переменной сложно вводить с клавиатуры, либо он является очевидным, либо не повышает удобочитаемость кода. Примером подобного применения ключевого слова var служит ситуация со вложенными универсальными типами, которые используются операциях по группировке. В следующем запросе используется переменная запроса с типом IEnumerable<IEnumerable<Student>>. При условии, что пользователи, работающие с кодом, понимают данные принципы, не возникнет никаких проблем с использованием неявной типизации для удобства и краткости.

----

Однако использование ключевого слова var может сделать код более трудным для понимания другими разработчиками. По этой причине в документации по C# ключевое слово var обычно используется только при необходимости.

Properties

Properties are members that provide a flexible mechanism to read, write, or compute the values of private fields. Properties can be used as if they are public data members, but they are actually special methods called accessors. This enables data to be accessed easily and still helps promote the safety and flexibility of methods.

In this example, the TimePeriod class stores a time period. Internally the class stores the time in seconds, but a property named Hours enables a client to specify a time in hours. The accessors for the Hours property perform the conversion between hours and seconds.

Example

class TimePeriod

{

private double seconds;

public double Hours

{

get { return seconds / 3600; }

set { seconds = value * 3600; }

}

}

class Program

{

static void Main()

{

TimePeriod t = new TimePeriod();

//Assigning the Hours property causes the 'set' accessor to be called.

t.Hours = 24;

//Evaluating the Hours property causes the 'get' accessor to be called.

System.Console.WriteLine("Time in hours: " + t.Hours);

}

}