Использует ли system.Decimal больше памяти, чем 'decimal'? - PullRequest
1 голос
/ 27 ноября 2009

Я слышал, как кто-то говорил, что в C # десятичное число с заглавными буквами использует больше памяти, чем десятичное с нижним регистром, потому что десятичное число разрешается до десятичного с нижним регистром и требует памяти.

Это правда?

Ответы [ 3 ]

10 голосов
/ 27 ноября 2009

номер

decimal - это просто псевдоним для System.Decimal. Они точно такие же, и псевдоним определяется во время компиляции.

4 голосов
/ 27 ноября 2009

Нет, это не так.

Ключевое слово decimal является псевдонимом для типа System.Decimal. Они точно такого же типа, поэтому нет разницы в памяти и разницы в производительности. Если вы используете отражение для просмотра скомпилированного кода, даже невозможно определить, использовался ли псевдоним или системный тип в исходном коде.

Существует два различия в том, где вы можете использовать псевдоним и тип системы:

  • Псевдоним decimal всегда является типом системы и не может быть изменен никаким образом. Использование идентификатора Decimal зависит от импорта пространства имен System. Однозначное имя для системного типа: global::System.Decimal.

  • Некоторые языковые конструкции принимают только псевдоним, а не тип. Я не могу вспомнить пример для decimal, но при указании базового типа для перечисления вы можете использовать только псевдонимы языка, например int, а не соответствующий системный тип, например System.Int32.

1 голос
/ 27 ноября 2009

Нет. Это просто глупо.

В C # десятичная дробь - это просто синоним десятичной дроби. Компилятор будет обрабатывать десятичные объявления как десятичные, а скомпилированный код будет выглядеть так, как если бы был использован десятичный.

...