Jump to content

Система общего типа

В Microsoft .NET Framework система общих типов ( CTS ) — это стандарт, который определяет, как определения типов и конкретные значения типов представлены в память компьютера. Он предназначен для того, чтобы позволить программам, написанным на разных языках программирования, легко обмениваться информацией. При использовании в языках программирования тип . можно описать как определение набора значений (например, «все целые числа от 0 до 10») и допустимых операций над этими значениями (например, сложение и вычитание)

Спецификация CTS содержится в стандарте Ecma 335 «Разделы общеязыковой инфраструктуры (CLI) от I до VI». CLI платформа и CTS были созданы Microsoft, а Microsoft .NET является реализацией стандарта.

Функции системы общего типа

[ редактировать ]
  • Создать структуру, которая поможет обеспечить межъязыковую интеграцию, безопасность типов и высокопроизводительное выполнение кода.
  • Предоставить объектно-ориентированную модель, поддерживающую полную реализацию многих языков программирования.
  • Определить правила, которым должны следовать языки, что помогает гарантировать, что объекты, написанные на разных языках, могут взаимодействовать друг с другом.
  • CTS также определяет правила, которые гарантируют, что типы данных объектов, написанных на разных языках, смогут взаимодействовать друг с другом.
  • CTS также определяет правила видимости типа и доступа к членам типа, т. е. CTS устанавливает правила, по которым сборки формируют область действия типа, а среда Common Language Runtime обеспечивает соблюдение правил видимости.
  • CTS определяет правила, управляющие наследованием типов , виртуальными методами и временем жизни объектов.
  • Языки, поддерживаемые .NET, могут реализовывать все или некоторые общие типы данных…

При округлении дробных значений по умолчанию во всей платформе используется метод «половина к четному» («банкирский»). Начиная с версии 2, по опции программиста также доступно «Симметричное арифметическое округление» (округление пополам от нуля). [1]

  • он используется для общения с другими языками

Тип категории

[ редактировать ]

Система общих типов поддерживает две общие категории типов:

Типы значений
Типы значений непосредственно содержат свои данные, а экземпляры типов значений либо размещаются в стеке , либо размещаются внутри структуры. Типы значений могут быть встроенными (реализованными средой выполнения), определяемыми пользователем или перечислениями.
Типы ссылок
Ссылочные типы хранят ссылку на адрес памяти значения и размещаются в куче . Ссылочные типы могут быть самоописывающими типами, типами указателей или типами интерфейса. Тип ссылочного типа можно определить по значениям самоописывающих типов. Самоописывающиеся типы далее делятся на массивы и типы классов. Типы классов — это определяемые пользователем классы, упакованные типы значений и делегаты.

В следующем примере, написанном на Visual Basic .NET, показана разница между ссылочными типами и типами значений:

Imports System

Class Class1
    Public Value As Integer = 0
End Class 'Class1
 
Class Test
    Shared Sub Main()
        Dim val1 As Integer = 0
        Dim val2 As Integer = val1
        val2 = 123
        Dim ref1 As New Class1()
        Dim ref2 As Class1 = ref1
        ref2.Value = 123
        Console.WriteLine("Values: {0}, {1}", val1, val2)
        Console.WriteLine("Refs: {0}, {1}", ref1.Value, ref2.Value)
    End Sub 'Main
End Class 'Test

Вывод приведенного выше примера

Values: 0, 123
Refs: 123, 123

Упаковка и распаковка

[ редактировать ]

Преобразование типов значений в ссылочные типы также известно как бокс . Как видно из примера ниже, нет необходимости сообщать компилятору, что Int32 упакован в объект, поскольку он сам позаботится об этом.

Int32 x = 10; 
object o = x ; // Implicit boxing
Console.WriteLine("The Object o = {0}",o); // prints out "The Object o = 10"

Однако Int32 всегда можно явно упаковать следующим образом:

Int32 x = 10; 
object o = (object) x; // Explicit boxing
Console.WriteLine("The object o = {0}",o); // prints out "The object o = 10"

Распаковка

[ редактировать ]

В следующем примере показано, как распаковать ссылочный тип обратно в тип значения. Сначала Int32 упаковывается в объект, а затем снова распаковывается. Обратите внимание, что распаковка требует явного приведения.

Int32 x = 5; 
object o1 = x; // Implicit Boxing
x = (int)o1; // Explicit Unboxing

См. также

[ редактировать ]
  1. ^ «Перечисление MidpointRounding» . Документы Майкрософт .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 403340d8db0e1db92683963cbc87fbc5__1676293080
URL1:https://arc.ask3.ru/arc/aa/40/c5/403340d8db0e1db92683963cbc87fbc5.html
Заголовок, (Title) документа по адресу, URL1:
Common Type System - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)