Кажется, что строка является ссылкой, но копируется по значению
List<string> data = new List<string>();
string s = "a";
data.Add(s); // copy by value??
s = "b";
Console.WriteLine(data[0]); // "a"
Также кажется, что класс является ссылкой, скопированной по ссылке
class boxstring { public string val; }
List<boxstring> data = new List<boxstring>();
boxstring s = new boxstring { val = "a" };
data.Add(s); // copy by reference, ok
s.val = "b";
Console.WriteLine(data[0].val); // "b"
Есть ли более простой способпередать строку в коллекцию по ссылке, не заключая ее в класс? Я бы хотел передать член объекта в коллекцию, и если объект был изменен, коллекция также должна быть изменена без написания дополнительного кода.