Какая память для констант, определенных в методе? - PullRequest
5 голосов
/ 12 июня 2011

Кто-то, кого я мог бы описать, что происходит (с точки зрения управления памятью), когда константа определена в методе в .Net?

Ответы [ 2 ]

7 голосов
/ 12 июня 2011

Константы обычно разрешаются во время компиляции и вставляются непосредственно в последовательность команд. Пример:

const int A = 10;
int b;

int i = A + b;

будет эффективно скомпилировано в:

int i = 10 + b;

Для строк они интернируются и кладутся в кучу.

1 голос
/ 12 июня 2011

Когда компилятор встречает постоянный идентификатор в исходном коде C #, он подставляет литеральное значение непосредственно в код промежуточного языка (IL), который он генерирует, потому что нет никакого переменного адреса, связанного с константой, во время выполнения поля const не могут быть переданы ссылка и не может отображаться как l-значение в выражении. А для получения дополнительной информации вы можете проверить Константы на Msdn.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...