А что, этот текст был чем-то не понятным?
К сожалению, не совсем, поскольку в следующем пункте шла речь о типах: классах, интерфейсах, делегатах, структурах, перечислениях.
Пространство имен System.Reflection содержит типы, предназначенные для извлечения сведений о сборках, модулях, членах, параметрах и других объектах в управляемом коде путем обработки их метаданных.Когда попытался понять, что такое типы в System.Reflection оказался в ступоре, поскольку как я понял, это тоже классы, но каждый из них выполняет свои функции.
Даже такая простая (для Вас) фраза: В структурах
CustomAttributeNamedArgument представляет именованный аргумент настраиваемого атрибута в контексте, предназначенном только для отражения. меня слегка "пригвоздила". Да, я не понял этой фразы, увы, но я не сдаюсь. Мне пока проще мыслить другими категориями: девушками, футбольными полями, машинами и т.д. Для начала найду, что означает
отражение.
Я рад за Вас, Андрей, что Вам это все понятно и легко дается. Вам нужно лишь понять одно, что разные люди обладают разным понимаем одного и того же явления и события. Я скорее и проще изучу язык программирования, используя образные (на птичках, людях, машинах и т.д.) выражения, чем конкретное определение, взятое из интернета. Читать я умею, поверьте, а вот понимание хромает.
Спасибо за Рихтера! Скачал, попробую хотя бы по несколько страниц прочитывать-ИЗУЧАТЬ в день! ИЗУЧАТЬ, а не просто читать. Прогресс будет 100%.
По поводу полей попробую пересказать, что Вы имели ввиду:
Как я понял, в старом и добром VB6, создание классов и свойств класса тоже происходило с помощью полей и свойств:
Вот пример:
Private mvarРадиус As Single ' Это поле
Public Property Let Радиус(ByVal vData As Single) ' Это получение свойства
mvarРадиус = vData
End Property
Public Property Get Радиус() As Single ' Это установка значения свойства
Радиус = mvarРадиус
End Property
Когда я присмотрелся, я понял, что при использовании класса я не видел в списке свойств переменной
mvarРадиус, но этот параметр успешно играл свою роль в работе класса (точнее свойства
Радиус) и он тоже хранит в себе значение, все время, пока класс существует!
За поле, объявленное с модификатором доступа public нужно бить линейкой по рукам.Грубо... получение ошибок - это тоже процесс обучения.
Зато становится понятным для чего нужно поле держать приватным
Private mvarРадиус As Single.
Однако, я решил попробовать сделать подобное в Visual Basic 2013 и вот что у меня получилось:
Public Class Class1
Private _color As Boolean
Public Property Color As Boolean
Get
Color = Me._color
End Get
Set(value As Boolean)
_color = value
' Здесь вставляется событие или процедура (а можно просто вызвать процедуру)
End Set
End Property
Public Sub AnyThing()
Dim FLD As New Class1
FLD.Color = True ' Что же это получается, что я и поле могу использовать и свойство?
FLD._color = True ' Что же это получается, что я и поле могу использовать и свойство? Почему поле отображается, если оно PRIVATE
End Sub
End Class
И поле и свойство - видимые! Что меня лично смущает.
Я что-то не понимаю, где моя ошибка?
Вроде сделал скрытым поле, а оно видимое... Напрашиваются вопросы:
1. Андрей линейкой будет махать?
или
2. Андрей включит своего мудрого учителя и поможет понять в чем проблема?
Кроме того, свойства позволяют инкапсулировать логику контроля доступа к полям и, в случае необходимости, править её, без необходимости править сторонний код, использующий эти свойства.Будьте человеком (вернее спуститесь с небес к людям) и объясните эту фразу как-нибудь проще... Можно на птичках, цветочках или т.п.?
Думаю, что целесообразней тебе было бы изучать c# по Троелсену, а не по справочнику Шильдта.Учту!