【发布时间】:2011-01-03 20:28:53
【问题描述】:
至少对我来说,我正在与一个奇怪的 .net 方法重载分辨率作斗争。我写了一个小样本来重现这个问题:
class Program
{
static void Main(string[] args)
{
var test = new OverloadTest();
test.Execute(0);
test.Execute(1);
Console.ReadLine();
}
}
public class OverloadTest
{
public void Execute(object value)
{
Console.WriteLine("object overload: {0}", value);
}
public void Execute(MyEnum value)
{
Console.WriteLine("enum overload: {0}", value);
}
}
public enum MyEnum
{
First = 1, Second = 2, Third = 3
}
将打印:
enum overload: 0
object overload: 1
基本上,调用的重载取决于值 (0, 1) 而不是给定的数据类型。
谁能解释一下?
更新
我应该指出 C# 2 和 C# 3 之间的行为不同
Do((long)0) => object overload //C# 2
Do((long)0) => enum overload //C# 3
【问题讨论】:
标签: c# .net overloading