нет. Тип самой локальной переменной не имеет значения - важно то, что вы не можете вернуть локальную переменную по ссылке, потому что к моменту возврата метода эта переменная уже не будет существовать. Это не тот случай, когда вы возвращаете элемент массива или поле в объекте ссылочного типа по ссылке.

бовал новый возврат ссылок C # 7.

Я могу скомпилировать и построить это:

        public ref string MisUseRefReturn(int index)
    {
        string[] array = { "a", "b", "c", "d" };
        return ref array[index]; //array[2] gets out of scope when this method returns!
    }

Согласно MSDN: возвращаемое значение не может быть локальной переменной в методе, который его возвращает; у него должна быть область действия, которая находится за пределами метода, который ее возвращает. Это может быть экземпляр или статическое поле класса или аргумент, передаваемый методу. Попытка вернуть локальную переменную приводит к ошибке компилятора CS8168: «Невозможно вернуть локальный объект obj по ссылке, так как он не является ссылочным локальным».

Так почему это компилируется? Когда я выполняю этот метод, возвращаемая ссылка показывает правильную строку.

Ответы на вопрос(2)

Ваш ответ на вопрос