RuntimeMethodInfo equality: bug?
让我们从以下内容开始:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | using System; public class Program { class A { public virtual void Do() { } } class B:A { } public static void Main() { var m1 = typeof(A).GetMethod("Do"); var m2 = typeof(B).GetMethod("Do"); Console.WriteLine("Methods are equal?\t\t{0}", m1 == m2); Console.WriteLine("Method handles are equal?\t{0}", m1.MethodHandle == m2.MethodHandle); Console.WriteLine("Done."); Console.ReadKey(); } } |
(在Ideone网上尝试)
因此,有两个不相等的
1 2 3 4 5 6 7 8 9 10 11 12 |
它看起来不像是一个意外的错误,至少在假设
这行为背后有什么原因吗?
P.S.请勿标记为[副本],请:)问题不在于"如何比较?"。例如,这个问题在这里和这里被多次回答。
谢谢!
我相信你对它背后的推理的假设——两个
这里的两个
1 2 | Console.WriteLine(m1.ReflectedType); // Program+A Console.WriteLine(m2.ReflectedType); // Program+B |