РЕДАКТИРОВАТЬ: Смягчить язык очень немного и уточнить.
Это редко хорошая идея, по моему опыту, хорошая идея игнорировать возвращаемое значение - по крайней мере, в тех случаях, когда возвращаемые значениятам, чтобы передать новую информацию вместо того, чтобы просто быть для удобства.
Один пример, где я видел, что это будет хорошо:
int foo;
int.TryParse(someText, out foo);
// Keep going
Здесь foo
будет 0, если либо someText
содержал "0", или это не могло быть проанализировано. Нам может быть все равно, в каком случае в этом случае возвращаемое значение метода для нас не имеет значения.
Другой пример приведен в словаре - предположим, вы пытаетесь подсчитать числовхождений каждой строки.Вы можете использовать:
int count;
dictionary.TryGetValue(word, out count);
dictionary[word] = count + 1;
Если слово не было в словаре для начала, это эквивалентно тому, что счетчик равен 0 - что уже произойдет в результате вызова TryGetValue
.
В качестве контрпримера игнорирование значения, возвращаемого Stream.Read
(и при условии, что ему удалось прочитать все данных, которые вы запрашивали), является распространенной ошибкой.
Если вам не нужно возвращаемое значение, и для его вычисления потребуется много усилий, возможно, стоит поискать что-то, что обеспечит те же желаемые побочные эффекты без дополнительных вычислений, - но никакой дополнительной производительностиподразумевается.Я бы больше беспокоился о правильности игнорирования возвращаемого значения, чем производительности.
РЕДАКТИРОВАТЬ: Другие примеры, где можно игнорировать возвращаемое значение:
- Некоторые беглые интерфейсы, включая
StringBuilder
;в то время как StringBuilder.Append(x).Append(y);
использует первое возвращаемое значение для второго вызова, очень часто возвращаемое значение вызова игнорируется, например, при добавлении в цикл - Некоторые вызовы коллекции могут давать возвращаемые значения, которые иногда игнорируются -например,
HashSet<T>.Add
, который указывает, было ли значение на самом деле добавлено или уже присутствовало.Иногда вам просто все равно.
Но в подавляющем большинстве случаев игнорирование возвращаемого значения метода указывает на то, что он делает больше, чем вам нужно.