Я нашел некоторый код в нашем приложении, который проходит через List<T>
по ссылке, чтобы указать, что модифицируется:Pass ссылка типа по ссылке, чтобы указать, будет изменен
void DoSomething(ref List<MyType> theList)
{
theList.Add(new MyType());
}
Я думаю, ясно, что rEF- ключевое слово устарело в этом случае, так как мы могли бы также добавить новые элементы в список без ключевого слова. Однако это указывает на то, что мы модифицируем списки или, по крайней мере, его элементы. Я считаю, что это особенно полезно, если у вас много параметров и вы хотите увидеть, какие из них были изменены и которые просто переданы как значения для выполнения задания.
Вопрос, если это нормально, безусловно, основано на мнениях и будет недействительным для SO, я скорее спрошу, есть ли другой подход к достижению этого или если я даже должен заботиться об этом.
EDIT: Чтобы уточнить мой вопрос. Этот вопрос равен не, если список изменен, это был всего лишь пример. В качестве альтернативы я также использовал любой другой ссылочный тип, а не только List<T>
.
Вы ищете эквивалент C++ 'const' для параметров? –
@ BernhardHiller Я сомневаюсь, поэтому я хочу указать, что параметр * изменен * в моем методе, а не наоборот. – HimBromBeere
В C# нет эквивалента для модификаторов констант C++. Этот эффект достигается благодаря реализации интерфейса и ограничениям внутри оберток. – eocron