Реализует ли ldstr внутреннюю реализацию newobj?

Поскольку мы все знаем, что строки создаются неявно, это означает, что нам не нужно использовать new, чтобы получить ссылку на объект один.

Из-за этого я всегда считал, что фреймворк позаботится об этом, и, следовательно, я получил бы идентичный IL, если бы сделал что-то вроде этого:

String first = new String(new char[] {'a'});
string second = "a";

Однако кажется, что первая строка выполняется с использованием newobj instance void [mscorlib]System.String::.ctor(char[]) и второй лдстр "а".

Итак, чтобы получить ссылку на строку, вызывает ли ldstrвнутренний вызов newobjи где я могу увидеть спецификацию/подробности, подтверждающие это?

6
задан m.edmondson 11 April 2012 в 17:45
поделиться