Программирование
Веб программирование

Cвойства

 
 

Всем доброе время суток,товарищи !

Сегодня поговорим о свойствах. 

Основное назначение свойств - это инкапсуляция закрытых полей. В ООП принято  держать поля и методы закрытыми, а устанавливать для них открытый доступ только при острой необходимости., по этому возникает такой вопрос : "  Как получить доступ к закрытому полю обьекта из другого класса ? ". Такого результата можно добиться с помощью свойств . Общая конструкция свойств

тип имя свойства 
{
get {
чтение
} 

set {
запись
 }
}

Get и Set являются аксессорами  свойства. 

В теле get  указывается  код для чтения значения , а  в теле Set происходит уже запись в поле. В каждом свойстве присутствует неявный параметр  valuе , он хранит в себе значение которое было присвоенно  свойству.

Сейчас расмотрим простой пример, для  более ясного понимая :)

Сlass test
{
private int x ; объявляем закрытое поле х

public int property свойство с открытым модификаторм доступа

{
get   { return  x;  }
set { x =value; } передаем значения параметра value нашему закрытому полю
}  

public void Write() метод для вывода результата
{
Console.WriteLine(" x: = " + x);
Console.Read();
}
}

class Program {

static void Main(string[] args)
{
test  ob = new test(); Создаем объект класса test
 test.property  = 10;  присваиваем свойству property значение, потом уже это свойство инициализирует наше поле
  test. Write(); вызываем метод для вывода результата
}

 Разумеееться єто не полная информация о свойствах, а лишь поверхностное описание.


Есть вопросы? Спроси на нашем форуме!!
Coolhacker770 [20.07.2013 21:44]

"Как получить доступ к закрытому полю обьекта из другого класса ?"

чрез рефлексию, а не чрез свойства. чрез свойства вы его получите лишь если программист это свойство задал. чрез рефлексию же из класса можно выдрать практически все, вне зависимости от того, хотел ли это программист или нет.

MaximSharp20 [20.07.2013 21:58]

То есть вы считаете что использовать свойства для доступа к закрытым полям -это не рациональный способ ?

Coolhacker770 [20.07.2013 22:19]

отчего? вполне рациональный. комментарий таки не слишком верно отражает точку зрения, ибо на ночь не думается :). я хотел сказать, что к закрытым полям можно получить доступ не только чрез свойства, а также что чрез рефлексию можно получить доступ к закрытым полям (свойствам, методам, чему угодно) даже если свойства не заданы.

рефлексия - более универсальный способ, хотя и намного более медленный. ее стоит юзать лишь при необходимости, вот :).

Coolhacker770 [20.07.2013 22:20]

я еще и пример сидел катал пол часа: http://pastebin.com/0fFdwquf

MaximSharp20 [20.07.2013 22:26]

Cпасибо)

Coolhacker770 [20.07.2013 22:28]

не за что)



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.