|
Chiffa ↓
|
 |
|
16 Август, 2009, 02:29:00
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 13
Сообщений: 268
|
Попробую внести свою лепту в развитие раздела по шарпу. Начну с рассказа о некоторых особенностях и возможностях языка, которые выгодно (?) отличают его от других. Об этом конечно можно прочитать в учебниках, но опыт показывает что лучше бы знать о их существовании заранее.
За одно уважу товарищей, желавших подискутировать на тему возможностей и плюшек языка.
Итак, свойства (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;
Фичу эту очень хвалят за удобство и несмешивание логики поведения (методы-аксессоры) и состояния (поля) объекта. Лично мне идея нравится. Если кто не знал, берите на заметку.
А насколько она крута и достойна подражания, можно спорить, а можно и не спорить))
Кстати, есть ли нечто подобное в других языках программирования? Насколько я знаю нету. Но мало ли:)
|
|
|
|
« Последнее редактирование: 16 Август, 2009, 02:29:00 от Frozzeg »
|
Записан
|
Иногда решительный шаг вперед - следствие ощутимого пинка под зад... ALL code is ugly. Yours, mine, everyone's. Code Is Ugly. Just face it.
|
|
|
|
Timur ↓
|
 |
|
13 Июль, 2009, 03:18:49 , спустя
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: в ухо Карма: 51
Сообщений: 896
|
Кстати, есть ли нечто подобное в других языках программирования? Насколько я знаю нету. Но мало ли:)
В дельфях есть Спустя 1 минуту 28 секунд добавил а ещё в Ruby и ActionScript
|
|
|
|
|
Записан
|
|
|
|
|
krasun ↓
|
 |
|
22 Июль, 2009, 10:01:01 , спустя 9 дней 6 часов 42 минуты 12 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 27
Сообщений: 941
|
в С++ через прокси-классы можно сделать Спустя 20 секунд добавил в php __set, __get Спустя 50 секунд добавил в Java должно быть
|
|
|
|
|
Записан
|
|
|
|
|
phpdude ↓
|
 |
|
22 Июль, 2009, 10:04:53 , спустя 3 минуты 52 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 252
Сообщений: д-о-х-у-я!
|
krasun, почитай получше про гет и сет))
они вызываются ТОЛЬКО КОГДА ПОЛЯ НЕ ПРИСУТСТВУЮТ О ОБЪЕКТА. в любом ином случае ОНИ НЕ ВЫЗЫВАЮТСЯ
|
|
|
|
|
Записан
|
|
|
|
|
krasun ↓
|
 |
|
22 Июль, 2009, 10:08:03 , спустя 3 минуты 10 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 27
Сообщений: 941
|
phpdude, ты про php? Спустя 37 секунд добавил точно, я забыл уже совсем, кошмар, вот что значит долго чем-то не пользоваться
|
|
|
|
|
Записан
|
|
|
|
|
phpdude ↓
|
 |
|
22 Июль, 2009, 10:24:23 , спустя 16 минут 20 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 252
Сообщений: 13738
|
krasun, это я про пыхапы
|
|
|
|
|
Записан
|
|
|
|
|
Timur ↓
|
 |
|
23 Июль, 2009, 01:22:04 , спустя 2 часа 57 минут 41 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: в ухо Карма: 51
Сообщений: 896
|
|
|
|
|
|
Записан
|
|
|
|
|
krasun ↓
|
 |
|
23 Июль, 2009, 01:23:37 , спустя 1 минуту 33 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 27
Сообщений: 941
|
Timur, оно что там вообще ни как не реализовано?
|
|
|
|
|
Записан
|
|
|
|
|
CTAPbIu_MABP ↓
|
 |
|
23 Июль, 2009, 01:27:46 , спустя 4 минуты 9 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
мавр
Группа: в ухо Карма: не нужна
Сообщений: 5055
|
Timur, оно что там вообще ни как не реализовано?
там есть приватные свойства и публисные методы.
public class MyClass{
private String myString;
public String getMyString(){
return myString;
}
public setMyString(String myString){
this.myString = myString;
}
} Спустя 26 секунд добавил такой класс называется BEAN
|
|
|
|
|
Записан
|
java.lang.OutOfMemoryError
|
|
|
|
krasun ↓
|
 |
|
23 Июль, 2009, 01:32:17 , спустя 4 минуты 31 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 27
Сообщений: 941
|
а ну это знаю Спустя 25 секунд добавил только тогда, наверное, приватные поля
|
|
|
|
|
Записан
|
|
|
|
|
CTAPbIu_MABP ↓
|
 |
|
23 Июль, 2009, 01:37:03 , спустя 4 минуты 46 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
мавр
Группа: в ухо Карма: не нужна
Сообщений: 5055
|
а ну это знаю Спустя 25 секунд добавил только тогда, наверное, приватные поля
почему поля? есть свойства и есть методы в яве больше ничего нет
это в пхп всякие константы
|
|
|
|
|
Записан
|
java.lang.OutOfMemoryError
|
|
|
|
phpdude ↓
|
 |
|
23 Июль, 2009, 01:37:43 , спустя 40 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 252
Сообщений: д-о-х-у-я!
|
krasun, думаю правильнее поля. хотя это все зависит от того как ты переведеш слово field
|
|
|
|
|
Записан
|
|
|
|
|
krasun ↓
|
 |
|
23 Июль, 2009, 01:44:46 , спустя 7 минут 3 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 27
Сообщений: 941
|
я книгу Шилдта по C#, когда-то читал, там просто говорилось поля про приватные свойства вот и вспомнил, а так по барабану
|
|
|
|
|
Записан
|
|
|
|
|
CTAPbIu_MABP ↓
|
 |
|
23 Июль, 2009, 01:57:04 , спустя 12 минут 18 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
мавр
Группа: в ухо Карма: не нужна
Сообщений: 5055
|
phpdude, слово property ни о чем не говорит?
|
|
|
|
|
Записан
|
java.lang.OutOfMemoryError
|
|
|
|
krasun ↓
|
 |
|
23 Июль, 2009, 02:06:29 , спустя 9 минут 25 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Адекваты Карма: 27
Сообщений: 941
|
|
|
|
|
|
Записан
|
|
|
|
|