C#方法参数

1、值参数
不含任何修饰符。方法中的形参是实参的一份拷贝,形参的改变不会影响到内存中实参的的值,实参是安全的。

2、引用参数
以ref修饰符声明。传递的参数实际上是实参的指针,所以在方法中的操作都是直接对实参进行的,而不是复制一个值;可以利用这个方式在方法调用时双向传递参数;为了以ref方式使用参数,必须在方法声明和方法调用中都明确地指定ref关键字,并且实参变量在传递给方法前必须进行初始化。
例:static void SomeFunction(int[] ints, ref int i)
  {
    ints[0]= 100;
    i=100;
  }

3、输出参数
以out修饰符声明。和ref类似,它也是直接对实参进行操作。在方法声明和方法调用时都必须明确地指定out关键字。out参数声明方式不要求变量传递给方法前进行初始化,因为它的含义只是用作输出目的。但是,在方法返回前,必须对out参数进行赋值。
例:static void SomeFunction(out int i)
  {
    i= 100;
  }
  public static int Main()
  {
    int i;
    SomeFunction(out i);
    Console.WriteLine(i);
    return 0;
  }

4、命名参数
参数一般需要按定义的顺序传送给方法。命名参数允许按任意顺序传递。
例:
string FullName(string firstName, string  lastName)   
{
  return firstName + " " +  lastName;
}
调用:
FullName("John","Doe"); 
FullName(lastName: "Doe",firstName: "John");

5、可选参数
参数也可以是可选的。必须为可选参数提供默认值。可选参数还必须是方法定义的最后一个参数。
例:
void TestMethod(int notOptionalNumber,int optionalNumber=10)
{
  //do something
}

6、数组型参数
以params修饰符声明。params关键字用来声明可变长度的参数列表。方法声明中只能包含一个params参数。
例:
static void SomeFunction(params int[] args)
{
  Console.WriteLine("Array contains {0} elements:",args.Length);
  foreach(int i in args)
  {
    Console.Write("{0}",i);
  }
      Console.WriteLine();
}
public static void Main()
 {
  int [] a = {1,2,3};
  SomeFunction(a);
  SomeFunction(10,20,30,40);
  SomeFunction();
}

posted @ 2012-08-13 15:45  DoTop-DoIT  阅读(273)  评论(0编辑  收藏  举报