拡張メソッドがあるとしましょう
public static T TakeRandom<T>(this IEnumerable<T> e)
{
...
引数eを検証するには、次のようにする必要があります。
A)if(e == null)throw new NullReferenceException()
B)if(e == null)throw new ArgumentNullException( "e")
C)チェックしないe
コンセンサスは何ですか?
私の最初の考えは常に引数を検証することなので、ArgumentNullExceptionをスローしました。繰り返しになりますが、TakeRandom()はeのメソッドになるため、おそらくNullReferenceExceptionになるはずです。しかし、それがNullReferenceExceptionである場合、TakeRandom()内でeのメンバーを使用しようとすると、とにかくNullReferenceExceptionがスローされます。
たぶん、Reflectorを使用してピークに達し、フレームワークが何をするかを調べる必要があります。