C#方法中的参数

来源:互联网 发布:java密码md5加密 编辑:程序博客网 时间:2024/06/07 06:29
 

C#中方法的参数有四种类型:
1、值参数,不含任何修饰符。
2、引用型参数,以ref修饰符声明。
3、输出参数,以out修饰符声明。
4、数组型参数,以params修饰符声明。
1、值参数
当利用值向方法传递参数时,编译程序给实参的值做一份拷贝,并且将此拷贝传递给该方法。被调用的方法不会修改内存中的实参的值,所以使用值参数时,可以保证实际值是安全的。
  在调用方法时,如果形式化参数的类型是值参数的话,调用的实参的表达式必须保证是正确的值表达式。
  简单的说,值参数,就是调用该值,不能修改该值。
class test
{
    static void Awsp(int x, int y)
    {
        int temp = x;
        x = y;
        y = temp;
    }
    static void Main()
    {
        int i = 1, j = 2;
        Awsp(i, j);
        Console.WriteLine("i={0},j={1}",i,j);
    }
}
此方法就是调用失败的例子,输出的值为:i=1,j=2
因为函数Awsp传回去的值并不是i和j变量,而是1和2,虽然1和2有交换(在Awsp函数开辟的内存中),但i和j在Main的内存中并没有实质的交换。
如果想实现交换,则可以用引用型参数
2、引用型参数
引用型参数不开辟新的内存区域,
class test
{
    static void Awsp(int x, int y)
    {
        int temp = x;
        x = y;
        y = temp;
    }
    static void Main()
    {
        int i = 1, j = 2;
        Awsp(ref i, ref j);
        Console.WriteLine("i={0},j={1}",i,j);
    }
}

3、输出参数
与引用型参数一样,不开辟内存区域,但差别是调用方法前,无需对变量进行初始化,输出线参数用于传递方法返回的数据。
out修饰符后应跟随与形参的类型相同的类型申明。