Страницы

Поиск по вопросам

четверг, 19 декабря 2019 г.

Можно ли в C# считать класс объектом?

#c_sharp #классы #объекты


Можно ли в C# считать класс объектом? Ведь у него же есть методы, свойства (public
переменные)?
    


Ответы

Ответ 1



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

Ответ 2



Класс - это класс (не объект). Экземпляр класса (созданный через оператор new) - это объект.

Комментариев нет:

Отправить комментарий