7

新しい.NET4.5APIには、IntrospectionExtensionsクラスに次のロジックがあります

public static TypeInfo GetTypeInfo(this Type type)
{
  if (type == (Type) null)
    throw new ArgumentNullException("type");
  IReflectableType reflectableType = (IReflectableType) type;
  if (reflectableType == null) 
    return (TypeInfo) null; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< HERE!
  else
    return reflectableType.GetTypeInfo();
}

このメソッドに到達不能コードがあるのはなぜですか?これはバグですか、それとも意図的に行われたものですか?

4

1 に答える 1

6

混乱は、クラス==で定義された演算子によって引き起こされます。Type

IL を見ると、 の代わりにオペレーターが呼び出されていることがわかりますReferenceEquals

L_0002: call bool System.Type::op_Equality(class System.Type, class System.Type)

したがって、コードは実際に到達可能です:)

于 2012-12-30T09:47:38.110 に答える