2010-06-12 3 views

ответ

8

Вы должны быть более конкретными. Вам интересно о:

  • размером переменной в памяти держит, что ценность
  • на размер MSIL, чтобы загрузить значение в IL стек, поэтому он может быть использован в выражении
  • размер от MSIL объявить локальную переменную способна удерживать значение
  • размер MSIL объявить элемент переменной, способный удерживать значение
  • размер машинного языка, полученного из MSIL посредством среды выполнения
  • размер связанных с ним метаданных и отладочной информации
  • что-то еще?

Существует множество разных «затрат», связанных с появлением целочисленного литерала, такого как (int)72, появляющегося в программе. Если это часть более крупного выражения, во время компиляции может возникнуть упрощение, так что предельная стоимость выполнения литерала не является чем-то вообще (за исключением того, что отладчик отображает более длинный фрагмент исходного кода).

+0

А, хорошо о синтаксисе. Слишком усталый прямо сейчас, я прямо не замечал, что: | – Joey

0

Как долго является частью строки?

Это зависит от того, какой процессор archrue вы используете (и, возможно, даже того, какой компилятор вы используете). This page объясняет - и дает вам свой ответ.

+3

К счастью, в спецификации Common Type System «int» 32 бита для всех архитектур и компиляторов. –

2

В большинстве случаев он будет потреблять 4 байта в стеке. Это связано с тем, что int - ключевое слово C#, которое отображается в Int32 в Common Type System (CTS).

Все становится немного сложнее, если оно должно быть в коробке. См. Статью this для объяснения бокса. Значение в коробке фактически потребляет 12 байтов (по крайней мере, в 32-битной системе) в куче; 4 для фактических данных, 4 для синхроблока и 4 - дескриптор типа или таблица методов.

Так что вопрос не совсем такой простой.

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