2009-11-27 3 views
1

Я слышал, как кто-то сказал, что в C# капитал Decimal использует больше памяти, чем десятичный децибел, потому что Decimal разрешен в нижнем регистре и требует памяти.Использует ли system.Decimal больше памяти, чем «десятичная»?

Это правда?

+2

Hm. Вопрос (1807368), созданный как определенный пользователь; вопрос удален; вопрос снова создается как скорее анонимный пользователь. Интересно. – Joey

+0

общий компьютер все еще зарегистрирован как определенный пользователь. – google

ответ

10

Номер

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

+0

за ваш быстрый ответ! – google

1

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

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

+1

При всем уважении, это не «глупо» - это совершенно правильный вопрос, особенно если вы исходите из фона java, где разница в коробке против unboxed - т. Е. Большая разница. Это ** происходит **, что в C# они одинаковы. –

4

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

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

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

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

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

Смежные вопросы