Как пояснялось в главе 8,
// Применить инициализаторы объектов в свойствах.
class MyClass {
}
class ObjlnitDemo { static void Main {
// Сконструировать объект типа MyClass с помощью инициализаторов объектов.
MyClass obj =
new MyClass { Count = 100, Str = "Тестирование" };
Console .WriteLine (obj .Cour^t + " " + obj.Str);
}
}
Как видите, свойстваCountиStrустанавливаются в выражениях с инициализатором объекта. Приведенная выше программа дает такой же результат, как и программа из главы 8, а именно:
100 Тестирование
Как пояснялось в главе 8, синтаксис инициализатора объекта оказывается наиболее пригодным для работы с анонимными типами, формируемыми в LINQ-выражениях. А в остальных случаях чаще всего используется синтаксис обычных конструкторов.
Ограничения, присущие свойствам
Свойствам присущ ряд существенных ограничений. Во-первых, свойство не определяет место для хранения данных, и поэтому не может быть передано методу в качестве параметраrefилиout.Во-вторых, свойство не подлежит перегрузке. Наличие двух разных свойств с доступом к одной и той же переменной допускается, но это, скорее, исключение, чем правило. И наконец, свойство не должно изменять состояние базовой переменной при вызове аксессораget.И хотя это ограничительное правило не соблюдается компилятором, его нарушение считается семантической ошибкой. Действие аксессораgetне должно носить характер вмешательства в функционирование переменной.
Применение модификаторов доступа в аксессорах