Reflektor mówi mi, że SortedList wykorzystuje klasę ThrowHelper rzucać wyjątki zamiast rzucać je bezpośrednio, na przykład:Dlaczego implementacja SortedList używa ThrowHelper zamiast bezpośredniego rzucania?
public TValue this[TKey key]
{
get
{
int index = this.IndexOfKey(key);
if (index >= 0)
return this.values[index];
ThrowHelper.ThrowKeyNotFoundException();
return default(TValue);
}
gdzie ThrowKeyNotFoundException nie robi nic więcej niż tylko:
throw new KeyNotFoundException();
zauważyć, jak to wymaga Instrukcja duff "return default (TValue)", która jest nieosiągalna. Muszę stwierdzić, że jest to schemat o korzyściach wystarczająco dużych, aby to uzasadnić.
Co to są te korzyści?
Czy spojrzałeś na rzeczywisty kod Microsoft, a nie na to, do czego się on kompilował? –
Nie, nie mam. Czy to jest znacząco różne? Jeśli tak, wyjaśnij to w odpowiedzi! :) –