Страницы

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

пятница, 31 января 2020 г.

c# различия между классом и типом?

#c_sharp #net


Правильно ли я понимаю: каждый класс это совокупность типов, а каждый тип это либо
класс либо структура?
    


Ответы

Ответ 1



Согласно официальной спецификации языка, типы в C# делятся на типы-значения — это структуры и перечисления (enum), ссылочные типы — это классы, а также массивы, интерфейсы и делегаты, типы-параметры — это типы, являющиеся параметрами обобщённых классов и методов (они не являются ни типами-значениями, ни ссылочными типами, и живут по особым правилам), и типы-указатели (которые могут появляться лишь в unsafe-коде). Каждый класс, в свою очередь, определяет структуру данных (не путать с struct!), содержащую данные-члены: константы и поля, функции-члены: методы, свойства, события, индексаторы, операторы, конструкторы объекта, деструкторы-финализаторы и статические конструкторы, и вложенные типы. Таким образом: Класс не есть совокупность типов, а лишь определение для структуры данных-экземпляра (он же объект) типа. Определение содержит именованные и неименованные данные-члены, функции-члены и вложенные типы. Типами, кроме классов и структур, являются ещё и перечисления, массивы, интерфейсы, делегаты, типы-параметры и указатели.

Ответ 2



каждый класс это совокупность типов На уровне данных вы почти верно написали. Есть три поправки. Класс это не просто совокупность типов, а совокупность типов каждому из которых соответствует своё имя - поле класса. Кроме того в классе могут быть определены функции, и метаинформация (смотрите атрибуты, рефлексия). Каждой переменной, функции и самому классу соответсвуют свои модификаторы (доступа: public, private, protected, internal, есть ещё и другие, static, virtual, abstract...). а каждый тип это либо класс либо структура тут вы верно написали, единственное что можно добавить что есть ещё делегаты, но на уровне реализации они тоже классы.

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

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