Попробую внести свою лепту в развитие раздела по шарпу. Начну с рассказа о некоторых особенностях и возможностях языка, которые выгодно (?) отличают его от других. Об этом конечно можно прочитать в учебниках, но опыт показывает что лучше бы знать о их существовании заранее.
За одно уважу товарищей, желавших подискутировать на тему возможностей и плюшек языка.
Итак, свойства (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;
Фичу эту очень хвалят за удобство и несмешивание логики поведения (методы-аксессоры) и состояния (поля) объекта. Лично мне идея нравится. Если кто не знал, берите на заметку.
А насколько она крута и достойна подражания, можно спорить, а можно и не спорить))
Кстати, есть ли нечто подобное в других языках программирования? Насколько я знаю нету. Но мало ли:)