В С++ я могу сделать что-то вроде этого:
int i[10] = new int[10];
int *p = &i[5];
Тогда я всегда могу знать, что p указывает на 5-й элемент массива int i, независимо от содержимого i.
Есть ли способ сделать что-то подобное в С#?
Я понимаю, что это, вероятно, один из способов, в котором С# "защищает" нас от самих себя, поэтому я не ищу точного эквивалентного, а скорее похожее понятие... то есть, имея возможность ссылаться на содержимое какой-либо другой переменной, а не экземпляр самой переменной.
Вот мой пример использования, о котором я думаю. У меня есть массив строк. Я хотел бы иметь еще один массив ссылок на эти элементы массива. Что-то вроде этого (явно недействительный код):
string[] s = new string[] { "one", "two", "three", "four", "five", "six" };
stringref[] sr = new stringref[] { &s[0], &s[1], &s[2], &s[3], &s[4], &s[5] };
Console.WriteLine(sr[1]); // == "two"
s[1] = "two point zero";
Console.WriteLine(sr[1]); // == "two point zero"
Конечно, ref-параметры делают это, а параметры out позволяют вам писать в определенную переменную. Но как насчет непараметрических параметров? Можете ли вы сохранить ссылку? Можете ли вы сохранить массив ссылок или словарь?
Похоже, если присутствует возможность делать это с параметрами, должен быть способ сделать это без них.