为什么C#调用对于同一类型的不同值的重载方法是不同的?

我对C#方法重载和调用解决方案有一个疑问.

我们假设我有以下C#代码:

enum MyEnum { Value1, Value2 }

public void test() {
    method(0); // this calls method(MyEnum)
    method(1); // this calls method(object)
}

public void method(object o) {
}

public void method(MyEnum e) {
}

请注意,我知道如何使其工作,但我想知道为什么一个int(0)值调用一个方法,另一个值(1)它调用另一个.这听起来很尴尬,因为这两个值都有相同的类型(int),但是它们对于不同的方法是“链接的”.

这是我第一个问题,对不起,如果我出错了, = P

最佳答案
文字0可以隐式转换为任何枚举类型,这是比对象更近的匹配. Spec.

例如,参见这些blog posts.

转载注明原文:为什么C#调用对于同一类型的不同值的重载方法是不同的? - 代码日志