Типы-значения в языке C# ЂЂЂ это типы, определённые с помощью ключевых слов struct, enum, а также все фундаментальные (то есть, входящие в список основных предопределенных типов, непосредственно понимаемых компилятором) типы (int, char, float,ЂЂЂ), за исключением типа System.String (System.String ЂЂЂ это единственный ссылочный фундаментальный тип).
К ссылочным типам относятся также такие специфические типы данных, как интерфейсы и делегаты. Но мы их не будем здесь касаться ЂЂЂ отличия этих типов от типов-значений столь велики, что вряд ли стоит дополнительно их подчёркивать.
ПРИМЕЧАНИЕМассивы ЂЂЂ это тоже ссылочные типы (хотя они определяются и без слова class). О массивах будет сказано ниже.
С точки зрения CLR, ссылочные типы ЂЂЂ это типы, унаследованные от любых типов, кроме типов System.ValueType и System.Enum. Тип Enum сам является наследником System.ValueType. Потому ссылочные типы ЂЂЂ это все типы, кроме прямых или косвенных потомков System.ValueType.
Как уже упоминалось, в среде .Net есть две категории типов ЂЂЂ ссылочные типы и типы значения. То, к какой категории будет принадлежать определяемый тип, задаётся при его определении. Ссылочные типы в языке C# определяются с помощью ключевого слова class.
Начиная программировать в среде .Net, довольно часто сталкиваешься с трудностями, в основе которых лежит недостаточно чёткое понимание различий в свойствах ссылочных типов (reference based types) и типов-значений (value based types). Между тем, мотивация применять типы-значения велика, т.к. умелое применение типов-значений может существенно повысить эффективность программного кода. Однако необходимо постоянно помнить, что типы-значения имеют ряд особенностей, которые необходимо учитывать как при разработке (определении) этих типов, так и при их использовании. Эти особенности value-типов и их отличия от ссылочных типов рассмотрены ниже.
Типы-значения в среде .NetQA или Полезные мелочиАвтор: The RSDN GroupИсточник: Опубликовано: 08.04.2003Исправлено: 13.03.2005Версия текста: 1.0 Две категории типов
ЂЂЂТипы-значения в среде .Net P PP PP P PP PP PPPОценить P
Комментариев нет:
Отправить комментарий