réflecteur me dit que SortedList utilise une classe ThrowHelper à jeter des exceptions au lieu de les jeter directement, par exemple:Pourquoi l'implémentation de SortedList utilise-t-elle ThrowHelper au lieu de lancer directement?
public TValue this[TKey key]
{
get
{
int index = this.IndexOfKey(key);
if (index >= 0)
return this.values[index];
ThrowHelper.ThrowKeyNotFoundException();
return default(TValue);
}
où ThrowKeyNotFoundException ne fait rien plus que:
throw new KeyNotFoundException();
Notez comment cela nécessite un Duff déclaration "return default (TValue)" qui est inaccessible. Je dois conclure que c'est un modèle avec des avantages assez importants pour justifier cela.
Quels sont ces avantages?
Avez-vous regardé le code Microsoft actuel et pas ce qu'il compile? –
Non, je n'ai pas. Est-ce significativement différent? Si c'est le cas, expliquez-le dans une réponse s'il vous plaît! :) –