#c_sharp #net
Правильно ли я понимаю: каждый класс это совокупность типов, а каждый тип это либо класс либо структура?
Ответы
Ответ 1
Согласно официальной спецификации языка, типы в C# делятся на типы-значения — это структуры и перечисления (enum), ссылочные типы — это классы, а также массивы, интерфейсы и делегаты, типы-параметры — это типы, являющиеся параметрами обобщённых классов и методов (они не являются ни типами-значениями, ни ссылочными типами, и живут по особым правилам), и типы-указатели (которые могут появляться лишь в unsafe-коде). Каждый класс, в свою очередь, определяет структуру данных (не путать с struct!), содержащую данные-члены: константы и поля, функции-члены: методы, свойства, события, индексаторы, операторы, конструкторы объекта, деструкторы-финализаторы и статические конструкторы, и вложенные типы. Таким образом: Класс не есть совокупность типов, а лишь определение для структуры данных-экземпляра (он же объект) типа. Определение содержит именованные и неименованные данные-члены, функции-члены и вложенные типы. Типами, кроме классов и структур, являются ещё и перечисления, массивы, интерфейсы, делегаты, типы-параметры и указатели.Ответ 2
каждый класс это совокупность типов На уровне данных вы почти верно написали. Есть три поправки. Класс это не просто совокупность типов, а совокупность типов каждому из которых соответствует своё имя - поле класса. Кроме того в классе могут быть определены функции, и метаинформация (смотрите атрибуты, рефлексия). Каждой переменной, функции и самому классу соответсвуют свои модификаторы (доступа: public, private, protected, internal, есть ещё и другие, static, virtual, abstract...). а каждый тип это либо класс либо структура тут вы верно написали, единственное что можно добавить что есть ещё делегаты, но на уровне реализации они тоже классы.
Комментариев нет:
Отправить комментарий