PHP форум на ПЫХА.РУ

PHP форум на ПЫХА.РУ

Языки программирования => C/C++ и C# => Тема начата: Chiffa от 16 Август, 2009, 02:29:00



Название: Особенности C#. Поля и свойства класса
Отправлено: Chiffa от 16 Август, 2009, 02:29:00
Попробую внести свою лепту в развитие раздела по шарпу. Начну с рассказа о некоторых особенностях и возможностях языка, которые выгодно (?) отличают его от других. Об этом конечно можно прочитать в учебниках, но опыт показывает что лучше бы знать о их существовании заранее.
За одно уважу товарищей, желавших подискутировать на тему возможностей и плюшек языка.
Итак, свойства (properties) класса.
Обычно для доступа к приватным полям используются методы - геттеры и сеттеры. В синтаксисе С# есть удобная обертка, позволяющая работать с установкой и получением значений для приватных переменных, как если бы они были открытыми. При этом принцип сокрытия данных не рушиться, вся необходимая валидация имеет место быть.
Выглядит это так:
C#

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;} }
             
}
 
 
Теперь работа с полями класса будет происходить как с обычными переменными.
C#

UserScoreData currentUser = new UserScoreData ();
currentUser.UserName = "Вася";
int currentScore = currentUser.GameScore;
 
 
Фичу эту очень хвалят за удобство и несмешивание логики поведения (методы-аксессоры) и состояния (поля) объекта. Лично мне идея нравится. Если кто не знал, берите на заметку.
А насколько она крута и достойна подражания, можно спорить, а можно и не спорить))
Кстати, есть ли нечто подобное в других языках программирования? Насколько я знаю нету. Но мало ли:)


Название: Особенности C#. Поля и свойства класса
Отправлено: Timur от 13 Июль, 2009, 03:18:49
Кстати, есть ли нечто подобное в других языках программирования? Насколько я знаю нету. Но мало ли:)

В дельфях есть
Спустя 1 минуту 28 секунд добавил
а ещё в Ruby и ActionScript


Название: Особенности C#. Поля и свойства класса
Отправлено: krasun от 22 Июль, 2009, 10:01:01
в С++ через прокси-классы можно сделать  
Спустя 20 секунд добавил
в php __set, __get
Спустя 50 секунд добавил
в Java должно быть


Название: Особенности C#. Поля и свойства класса
Отправлено: phpdude от 22 Июль, 2009, 10:04:53
krasun, почитай получше про гет и сет))
 
они вызываются ТОЛЬКО КОГДА ПОЛЯ НЕ ПРИСУТСТВУЮТ О ОБЪЕКТА. в любом ином случае ОНИ НЕ ВЫЗЫВАЮТСЯ


Название: Особенности C#. Поля и свойства класса
Отправлено: krasun от 22 Июль, 2009, 10:08:03
phpdude, ты про php?  
Спустя 37 секунд добавил
точно, я забыл уже совсем, кошмар, вот что значит долго чем-то не пользоваться


Название: Особенности C#. Поля и свойства класса
Отправлено: phpdude от 22 Июль, 2009, 10:24:23
krasun, это я про пыхапы


Название: Особенности C#. Поля и свойства класса
Отправлено: Timur от 23 Июль, 2009, 01:22:04
в Java должно быть
нет


Название: Особенности C#. Поля и свойства класса
Отправлено: krasun от 23 Июль, 2009, 01:23:37
Timur, оно что там вообще ни как не реализовано?


Название: Особенности C#. Поля и свойства класса
Отправлено: CTAPbIu_MABP от 23 Июль, 2009, 01:27:46

Timur, оно что там вообще ни как не реализовано?
там есть приватные свойства и публисные методы.
 
Javascript
public class MyClass{
private String myString;
public String getMyString(){
return myString;
}
public setMyString(String myString){
this.myString = myString;
}
}
Спустя 26 секунд добавил
такой класс называется BEAN


Название: Особенности C#. Поля и свойства класса
Отправлено: krasun от 23 Июль, 2009, 01:32:17
а ну это знаю
Спустя 25 секунд добавил
только тогда, наверное, приватные поля


Название: Особенности C#. Поля и свойства класса
Отправлено: CTAPbIu_MABP от 23 Июль, 2009, 01:37:03

а ну это знаю
Спустя 25 секунд добавил
только тогда, наверное, приватные поля
почему поля? есть свойства и есть методы в яве больше ничего нет
это в пхп всякие константы


Название: Особенности C#. Поля и свойства класса
Отправлено: phpdude от 23 Июль, 2009, 01:37:43
krasun, думаю правильнее поля. хотя это все зависит от того как ты переведеш слово field


Название: Особенности C#. Поля и свойства класса
Отправлено: krasun от 23 Июль, 2009, 01:44:46
я книгу Шилдта по C#, когда-то читал, там просто говорилось поля про приватные свойства вот и вспомнил, а так по барабану


Название: Особенности C#. Поля и свойства класса
Отправлено: CTAPbIu_MABP от 23 Июль, 2009, 01:57:04
phpdude, слово property ни о чем не говорит?


Название: Особенности C#. Поля и свойства класса
Отправлено: krasun от 23 Июль, 2009, 02:06:29
http://java.sun.com/docs/books/tutorial/java/javaOO/initial.html


Название: Особенности C#. Поля и свойства класса
Отправлено: phpdude от 23 Июль, 2009, 02:08:20

phpdude, слово property ни о чем не говорит?
вот нахуй об этом спорить? все все понимают. заебали. пошел спать чмоки ;)


Название: Особенности C#. Поля и свойства класса
Отправлено: CTAPbIu_MABP от 23 Июль, 2009, 10:47:53
krasun, уговорил


PHP форум на ПЫХА.РУ