【发布时间】:2019-05-22 20:50:25
【问题描述】:
这是我的代码:
public class Program
{
public enum SexEnum{
Male,
Female
}
public static void Test(SexEnum s){
Console.WriteLine("enum...");
}
public static void Test(Object s){
Console.WriteLine("object...");
}
public static void Main(string[] args)
{
Test(0);
Test(1);
}
}
但实际结果是:
enum...
object...
为什么在重载方法中枚举参数不能接受int值(>0)?
【问题讨论】:
-
为了获得更多乐趣,请尝试添加一个接受
int的重载。这种行为都有完整的文档记录,但说明了重载的危险。 -
只有值 0 具有到枚举的隐式转换。如果您希望这是可预测的,那么您需要一个带有 int 参数的重载,应用 (SexEnum) 强制转换。或者根本不使用 int,值应该在调用者中转换。