Ответы пока все очень хорошие, но все они исследуют «механическую» сторону отношений.Я смотрю на это немного по-другому.
Подумайте о кнопке «Пуск» в микроволновой печи.Эта кнопка обеспечивает абстракцию для пользователя микроволновой печи, и кнопка имеет определенные свойства.У него есть размер, у него есть позиция, у него есть текст, у него есть действие при нажатии.
Класс * A Button
в программе на C # также предоставляет абстракцию и аналогичным образом имеет определенные свойства.Как и микроволновая кнопка, она имеет размер, позицию, текст и действие при нажатии.
Размер и позиция представлены целыми числами, а текст - строкой.Нельзя сказать, что кнопка микроволновой печи «имеет целые числа, представляющие ее размер и положение, и строку, представляющую ее текст».А для кнопки программного обеспечения тот факт, что она имеет размер, положение и текст, является семантикой кнопки.Тот факт, что размер, положение и текст представлены целыми числами и строками, является фактом о механизмах , из которых построена кнопка, а не фактом о назначении кнопкиили логически какую информацию она представляет миру.
Программная кнопка представляет действие нажатия в качестве события;событие говорит "это вещь, на которую можно нажать".Коллекция делегатов, которая фактически реагирует на нажатие кнопки, является частью механизма .
A свойство сообщает вам факт о классе.Это может быть сделано путем предоставления вам строки, но не путайте строку со свойством.Строка - это механизм , который используется свойством для передачи факта потребителю.Событие также сообщает вам факт о классе.Это происходит с делегатом , поскольку делегат - это механизм , из которого построено событие.