Если у вас есть метод, который принимает переменную и фактически не изменяет физическую переменную, следует ли использоватьref
для указания входного параметра? Это не имеет большого значения, потому что переменная не изменяется в любом случае, так что же недостатки/преимущества использования ref
? (В C#, по крайней мере)Должно ли использоваться значение или ссылка, если оба работают одинаково?
Например,
int[] numbers = new int[] { /* some numbers */ };
int getNumberValue(int index)
{
return numbers[index];
}
int getNumberRef(ref int index)
{
return numbers[index];
}
Почему Вы предпочли бы любой из этих двух методов над другим? Они оба работают одинаково, поскольку параметр никогда не изменяется ...
Я бы подумал, что версия ref
будет быстрее, если я использую ее в 18 миллиардов раз, поскольку версия значения, вероятно, делает клон параметра, поэтому метод может изменить его (но я могу ошибаться), хотя могут быть некоторые недостатки.
'Я бы подумал, что версия ref будет быстрее: http://ericlippert.com/2012/12/17/performance-rant/ –
Вы хотите нарезать хлеб. Вы можете взять нож из ящика или пойти купить катану, чтобы нарезать хлеб. Зачем вам использовать катану, если вам это явно не нужно? Используйте katana *, когда * вам нужно. (Плохая аналогия на самом деле, катаны - здоровы, и я бы использовал их, чтобы нарезать хлеб, если бы у меня был один) – dcastro
@dcastro вы правы, * Плохая аналогия *. –