Я должен использовать "касательно" передать переменную списка в отношении метода?
Ответ то, что "касательно" не нужно (поскольку список был бы ссылочной переменной), однако для простоты в удобочитаемости, помещенной "касательно" в?
Нет, не используйте ссылку, если вы не хотите изменить список, на который ссылается переменная. Если вы хотите просто получить доступ к списку, делайте это без ссылки.
Если вы делаете параметр ref, вы говорите, что вызывающая сторона должна ожидать, что параметр, который она передает, может быть присвоен другому объекту. Если вы этого не делаете, то это не передает правильную информацию. Вы должны считать, что все разработчики C# понимают, что передается ссылка на объект.
Вам не нужен ref
в вашем сценарии, и он не поможет читабельности.
ref
используется только в том случае, если вы собираетесь изменить то, на что ссылается переменная, а не содержимое объекта, на который она ссылается. Имеет ли это смысл?
Словарь - это ссылочный тип, поэтому передача по значению невозможна, хотя ссылки на словарь являются значениями. Позвольте мне прояснить это:
void Method1(Dictionary<string, string> dict) {
dict["a"] = "b";
dict = new Dictionary<string, string>();
}
void Method2(ref Dictionary<string, string> dict) {
dict["e"] = "f";
dict = new Dictionary<string, string>();
}
public void Main() {
var myDict = new Dictionary<string, string>();
myDict["c"] = "d";
Method1(myDict);
Console.Write(myDict["a"]); // b
Console.Write(myDict["c"]); // d
Method2(ref myDict); // replaced with new blank dictionary
Console.Write(myDict["a"]); // key runtime error
Console.Write(myDict["e"]); // key runtime error
}