假设我有一个带有2个签名的方法:
void Foo(int a);
void Foo(long a, string s = null);
Run Code Online (Sandbox Code Playgroud)
如果我这样调用Foo:
Foo(1);
Run Code Online (Sandbox Code Playgroud)
它似乎称为两者中的第一个.是因为默认情况下直接作为参数传递的数字被视为int32吗?这指定在哪里?
C#5.0规范的第2.4.4.2节(整数文字)指出:
整数文字的类型确定如下:
因此第一个项目符号适用于您的情况,因为您没有后缀,并且1适合列表中的第一项int,因此整数文字1是类型int.