Является ли "строка s;" скомпилировано в "string s = new String (..);"? - PullRequest
0 голосов
/ 11 марта 2012

Строка не является типом значения, но мы по-прежнему используем его как тип значения.Итак, string s; скомпилирован что-то вроде string s = new String(..);?

Ответы [ 2 ]

2 голосов
/ 11 марта 2012

Когда вы определяете string s;, вы определяете только ссылку, которая в настоящее время вообще ни на что не указывает.Поскольку строка является ссылочным типом, компилятор не будет генерировать string s = new String(..);.Вы можете понимать это как string s = null; будет результатом компиляции.

Для типов значений, таких как int, дело обстоит иначе.Например, когда вы определяете int i;, он компилируется в int i = 0;, где 0 - это значение по умолчанию.

0 голосов
/ 11 марта 2012

Я понял свою путаницу: прочитав этот пост, я понял, что в стеке будет храниться ссылка на s, которая будет выделена в куче после инициализации.

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