请高手指点,用Reflector查看Enum.CompareTo的源码时发现的疑问?
用Reflector查看Enum.ComopareTo方法的源码时发现:
public int CompareTo(object target)
{
if (target != null)
{
Type type1 = base.GetType();
Type type2 = target.GetType();
if (type1 != type2)
{
throw new ArgumentException(string.Format(Environment.GetResourceString("Arg_EnumAndObjectMustBeSameType"), type2.ToString(), type1.ToString()));
}
。。。。
}
Type type1 = base.GetType(); //此句取得的type1应该为System.Enum
Type type2 = target.GetType(); //此句取得的type2应该为自定义的枚举的全名称
if (type1 != type2) 应该总为FALSE的,而且我故意使用两个不同的枚举测试,发现
throw new ArgumentException(string.Format(Environment.GetResourceString("Arg_EnumAndObjectMustBeSameType"), type2.ToString(), type1.ToString()));这句抛出的异常是显示Type type1 = base.GetType();这句其实应该是this.GetType();
请高手给予指点!