设计一个方法的参数时,可为部分或全部参数分配默认值。然后,调用这些方法的代码可以选择不指定部分实参,接受其默认值。除此之外,调用方法时,还可通过指定参数名称的方式为其传递实参。以下代码演示了可选参数和命名参数的用法:

using System;
using System.Collections.Generic;
using System.Text;

namespace ParameterInMethod
{
    class Program
    {
        private static int s_n = 0;
        private static void M(int x = 9, string s = "A", DateTime dt = default(DateTime), Guid guid = new Guid())
        {
            Console.WriteLine("x={0},s={1},dt={2},guid={3}",x,s,dt,guid);
        }

        static void Main(string[] args)
        {
            // 1. 等同于M(9, "A", default(DateTime), new Guid());
            M();

            // 2. 等同于M(8, "X", default(DateTime), new Guid());
            M(8, "X");

            // 3. 等同于M(5, "A", DateTime.Now, new Guid());
            M(5, guid: Guid.NewGuid(), dt: DateTime.Now);

            // 4. 等同于M(0, "1", default(DateTime), new Guid());
            M(s_n++, s_n++.ToString());

            // 5. 等同于以下两行代码:
            // string t1 = "2"; int t2 = 3;
            // M(t2, t1, default(DateTime), new Guid());
            M(s: (s_n++).ToString(), x: s_n++);

            Console.ReadLine();

            //程序输出结果如下:
            /*
             * x=9,s=A,dt=0001/1/1 0:00:00,guid=00000000-0000-0000-0000-000000000000
             * x=8,s=X,dt=0001/1/1 0:00:00,guid=00000000-0000-0000-0000-000000000000
             * x=5,s=A,dt=2012/5/31 10:34:28,guid=cdc348c3-6435-40ed-8e37-23d90f4f05ce
             * x=0,s=1,dt=0001/1/1 0:00:00,guid=00000000-0000-0000-0000-000000000000
             * x=3,s=2,dt=0001/1/1 0:00:00,guid=00000000-0000-0000-0000-000000000000
             */

        }
    }
}
View Code

相关文章: