Поскольку мы все знаем, что строки создаются неявно, это означает, что нам не нужно использовать new
, чтобы получить ссылку на объект один.
Из-за этого я всегда считал, что фреймворк позаботится об этом, и, следовательно, я получил бы идентичный IL, если бы сделал что-то вроде этого:
String first = new String(new char[] {'a'});
string second = "a";
Однако кажется, что первая строка выполняется с использованием newobj instance void [mscorlib]System.String::.ctor(char[])
и второй лдстр "а"
.
Итак, чтобы получить ссылку на строку, вызывает ли ldstr
внутренний вызов newobj
и где я могу увидеть спецификацию/подробности, подтверждающие это?