请考虑以下代码:
static void foo(object v)
{
System.Console.WriteLine(v.GetType());
}
static void foo(OleDbType v)
{
System.Console.WriteLine(v.GetType());
}
static void Main(string[] args)
{
foo(1);
foo(0);
foo(2);
}
输出为:
System.Int32
System.Data.OleDb.OleDbType
System.Int32
因此,foo(0)
已解决为static void foo(OleDbType)
,其他呼叫已解决为static void foo(object)
我希望所有电话都可以解决使用相同的方法,为什么会发生这种情况?
从常数0到任何枚举类型都有隐式转换,因此foo(0)
与OleDbType
枚举参数匹配过载。