XMLTea.net

            每个人都有追求的权力,其追求的毅力和目标决定了追求的价值!
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

关于C#中方法的参数

Posted on 2005-07-27 19:36  XMLTea  阅读(529)  评论(0)    收藏  举报
  1. C#方法调用传递的参数分四类:
    1. 默认的值参数(value parameter); //传递复制品
    2. 引用参数(reference parameter),关键字"ref";//传递引用指针
    3. 输出参数(output parameter),关键字"out"。//方法返回一个以上的返回值时使用
    4. 数组参数(array parameter),关键字"params"
  2. 引用参数输出参数的区别:
    “引用参数”与“输出参数”非常相似。out修饰符ref修饰符有很相似的地方:传址。事实上保留字“ref”和“out”本身在中间语言里的实现是一模一样的。但C#中的ref参数与out参数还是有区别的:
    1. ref参数必须在进入方法之前得到赋值;
    2. out参数则必须在离开方法之前得到赋值。需要记住输出参数与通常的函数返回值有一定的区别:函数返回值往往存在堆栈里,在返回时弹出;而输出参数需要用户预先制定存储位置,也就是用户需要提前声明变量--当然也可以初始化。

      using System;
      class Test    //拆分姓名
      {
          static void ResoluteName(string fullname,out string firstname,out string lastname)
          {
              string[] strArray=fullname.Split(new char[]{' '});
              firstname=strArray[0];
              lastname=strArray[1];
          }
          public static void Main()
          {
               
                      //string MyName="Cornfield Lee";
                      Console.WriteLine("Enter Your Name:");
                      string MyName = Console.ReadLine();
              string MyFirstName,MyLastName;

              ResoluteName(MyName,out MyFirstName,out MyLastName);

              Console.WriteLine("My first name: {0}, My last name: {1}",
                      MyFirstName, MyLastName);
          }
      }

  3. 数组参数(关键字"params")
    using System;
    class Test    //合计所有整数值
    {
        static int Sum(params int[] args)
        {
            int s=0;
            foreach(int n in args)
            {
                s+=n;
            }
            return s;
        }
        static void Main()
        {
            int[] var=new int[]{1,2,3,4,5};
            Console.WriteLine("The Sum:"+Sum(var));//传数组变量
            Console.WriteLine("The Sum:"+Sum(10,20,30,40,50));//传能够隐式转化为数组的参数
        }
    }

    注意以下两个规定:
    1. 数组参数只能是一维的;
    2. 如果有多个输入参数,就只允许一个输入参数是params参数,而且它必须是参数表中的最后一个