Как примитивные типы данных в 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#, но не в ДТОЖ. Я не знаю таких типов.)