Я исхожу из фона С++. Этот вопрос задавали раньше, но попробуйте, чтобы я не смог найти ответ. Скажем, у меня есть:
string[] ArrayOfReallyVeryLongStringNames = new string[500];
ArrayOfReallyVeryLongStringNames[439] = "Hello world!";
Могу ли я создать строку, которая ссылается на выше (ни одна из них не будет скомпилирована):
string a = ref ArrayOfReallyVeryLongStringNames[439]; // no compile
string a = &ArrayOfReallyVeryLongStringNames[439]; // no compile
Я понимаю, что строки неизменны в С#. Я также понимаю, что вы не можете получить адрес управляемого объекта.
Я хотел бы сделать это:
a = "Donkey Kong"; // Now ArrayOfReallyVeryLongStringNames[439] = "Donkey Kong";
Я прочитал вопрос о переполнении стека Сделать ссылку на другую строку на С# который имеет отличный ответ, но к немного другому вопросу. Я НЕ хочу передать этот параметр функции по ссылке. Я знаю, как использовать ключевое слово "ref" для передачи параметра по ссылке.
Если ответ "Вы не можете сделать это в С#", есть ли удобный способ обхода?
EDIT: Некоторые из ответов указывают на то, что вопрос неясен. Давайте попробуем об этом по-другому. Скажем, мне нужно было манипулировать всеми элементами в исходном длинноименованном массиве с основными индексами. Я хотел бы добавить псевдонимы в Array... [2], Array... [3], Array... [5] и т.д. В список. Затем измените элементы в списке, используя цикл "for" (возможно, передав список, только что созданный для функции).
В С# ключевое слово "using" создает псевдоним для класса или пространства имен. Как видно из ответов, невозможно создать псевдоним для переменной.