1.C#如何判断object类型是相等的?
这里有两个关键的式子,s==t和s.Equals(t),下面我们来逐一分析
对于s==t,系统会调用object.Equals( object, object )这个静态方法:
public static bool Equals(object objA, object objB) { return ((objA == objB) || (((objA != null) && (objB != null)) && objA.Equals(objB))); }
而object是引用类型,引用类型的变量,遇到等号运算符(==)时,依据内存地址判等
s和t两个值是在不同时刻由1装箱而来,所以地址不一样,所以objA == objB得到结果false,返回False
而对于s.Equals( t ),由于bool.Equals (object obj)实例方法是一个virtual(虚方法),所以在运行时会调用Int32.Equals(object obj):
public override bool Equals(object obj) { return ((obj is int) && (this == ((int) obj))); }
s和t经过转换,得到了数字1,接着进行数字之间的等号运算,得到True
如果本文引用了你的文章而未注明,请及时联系我。
浙公网安备 33010602011771号