小问题【2】
这样是可以的,C#编译器之使用调用者显示标识的参数,忽略调用者没有指定的所有可选参数。
当无法挑选出最具唯一性的方法,编译器会报错。
代码:
static void Main() { test(1); Console.ReadLine(); } static void test(int a) { Console.WriteLine(a); } static void test(int a, int b = 1) { Console.WriteLine("{0}{1}", a,b); }
命名参数:
调用者可以显式指定参数名,并为该参数赋一个值,而不是只能根据参数顺序来决定哪个值给哪个参数。
但这种便利的代价是牺牲方法接口的灵活性,更改参数名会导致使用命名参数的代码无法编译。
代码:
static void Main() { test(a:2, b:3); // Console.ReadLine(); } static void test(int a, int b = 1) { Console.WriteLine("{0}{1}", a,b); }