params说明请看:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/params
params关键字存在于重载函数中,千万注意(隐式)类型转换:
namespace TestC
{
enum Enum1 { A = 0, B = 1,C=2}
class Program
{
static void Main(string[] args)
{
EnumTest1(1,Enum1.A);
EnumTest1(1,1);//这句不能编译通过
}
public static void EnumTest1(int i, Enum1 e) { }
}
}
但如果加上一个重载函数:
public static void EnumTest1(int i, params object[] ps) { }
这时就可以编译通过了,第二个参数1隐式转为object,这个重载一般不是你想要的。所以你想要调用public static void EnumTest1(int i, Enum1 e) { }
最好显式转换一下:EnumTest1(1,(Enum1)1);
或这样调用:EnumTest1(1,Enum1.B);
(TIPS:如果函数调用没有提示错误,但运行中出现问题,按F12进入查看,会定位到正确的重载函数。)