Во-первых, мне не очень нравится опция default(T)
: что, если у вас есть список int
, где 0
(предположительно, это значение по умолчанию int
; я не использую C #) такое вполне допустимое значение?
(Извиняюсь за синтаксис Java, но если бы я попытался угадать C #, я бы где-нибудь напутал :))
class Maybe<T> {
public Maybe() {
set = false;
value = null;
}
public Maybe(T value) {
set = true;
this.value = value;
}
public T get(T defaultVal) {
if (set)
return value;
return defaultVal;
}
private boolean set;
private T value;
}
Тогда, конечно, Find
вернет Maybe<T>
, и вызывающий выберет какое-то значение, которое будет разумным значением по умолчанию в этом контексте . Возможно, вы могли бы добавить getDefault
для удобства, когда default(T)
является правильным ответом, конечно.
Для IndexOf
, однако, -1
является разумным значением для этого, поскольку действительные значения, очевидно, всегда> = 0, поэтому я бы просто сделал это.