За одно уважу товарищей, желавших подискутировать на тему возможностей и плюшек языка.
Итак, свойства (properties) класса.
Обычно для доступа к приватным полям используются методы - геттеры и сеттеры. В синтаксисе С# есть удобная обертка, позволяющая работать с установкой и получением значений для приватных переменных, как если бы они были открытыми. При этом принцип сокрытия данных не рушиться, вся необходимая валидация имеет место быть.
Выглядит это так:
public class UserScoreData
{
//приватные поля
int _uid ;
int _score;
string _username;
// соответствующие им паблик-свойства
public int Uid {
get {
return _uid;
}
set{
//все необходимые проверки…
_uid = value;
}
}
public int GameScore { get { return _score; } set{ _score = value;} }
public string UserName { get { return _username; } set {_username = value;} }
}
Теперь работа с полями класса будет происходить как с обычными переменными.
UserScoreData currentUser = new UserScoreData ();
currentUser.UserName = "Вася";
int currentScore = currentUser.GameScore;
Фичу эту очень хвалят за удобство и несмешивание логики поведения (методы-аксессоры) и состояния (поля) объекта. Лично мне идея нравится. Если кто не знал, берите на заметку.
А насколько она крута и достойна подражания, можно спорить, а можно и не спорить))
Кстати, есть ли нечто подобное в других языках программирования? Насколько я знаю нету. Но мало ли:)