#c_sharp #классы #объекты
Можно ли в C# считать класс объектом? Ведь у него же есть методы, свойства (public переменные)?
Ответы
Ответ 1
Класс = тип, т.е. некоторое "описание", метаданные. Класс всегда один. Это рецепт торта, если хотите. Объект = экземпляр типа, т.е. "физическое" воплощение описания. Объектов может быть много. Это выпеченный по рецепту торт. Если говорить о реализации -- это участок памяти, содержащий служебные данные плюс данные самого объекта. При этом CLR естественно где-то нужно хранить информацию о типе, о том, по какому адресу вызвать методы типа, знать, какой объект к какому типу относится, и т.д. Для этого есть объект-тип (type object) -- расположенная в памяти информация о типе, на которую ссылаются все экземпляры этого типа (с помощью type object pointer в секции служебных данных). Подробнее об этом можно почитать в книге Джеффри Рихтера "CLR via C#", глава 4. Однако даже несмотря на это, называть класс объектом будет некорректно. Вас банально не поймут другие разработчики.Ответ 2
Класс - это класс (не объект). Экземпляр класса (созданный через оператор new) - это объект.
Комментариев нет:
Отправить комментарий