小问题【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);
    }
posted @ 2012-03-16 21:30  wouldguan  阅读(141)  评论(0编辑  收藏  举报