Как примитивные типы данных в C#?
Как System.float
, System.int
и другие типы примитивов работы? Я никогда не понимал, как можно создавать примитивные структуры, и я задаюсь вопросом, Могу ли я сделать свой собственный числовой тип.
2 ответов
предполагая, что мы говорим о компиляторе C#, который нацелен на инфраструктуру общего языка (CLI), как почти все, он в основном использует примитивные типы, предоставляемые CLI.
есть эффективно три уровня поддержки, чтобы рассмотреть:
- подлинные примитивы, с их собственным представлением и инструкциями в IL
- числовые типы, о которых компилятор C# имеет специальные знания, но которые не являются частью CLI - в основном,
System.Decimal
. Это и часть системы общего типа (CTS), что означает, что если вы создадитеconst decimal
В C# вы все равно можете использовать его в VB, например. Но прямого IL поддержка. - другие числовые типы, такие как
BigInteger
- вы можете написать свои собственные, такие.
середина второго маркера позволяет C# иметь десятичные литералы и десятичные константы, ни один из которых не возможен для третья пуля. Например, BigInteger
не имеет языковой поддержки, поэтому вы не можете написать:
// This isn't valid
BigInteger bigInteger = 123456789012345678901234567890;
вместо этого вам придется проанализировать строковое представление. Точно так же вы не можете иметь const BigInteger
.
(теоретически можно было бы иметь тип в C#, но не в ДТОЖ. Я не знаю таких типов.)
примитивные типы, такие как int
и float
поддерживаются непосредственно процессором, а платформа .net и языки имеют аналогичную встроенную поддержку для них. Таким образом, вы не можете создать свои собственные примитивы на уровне языка.