C#语言的4种参数

1.值参数:

当值参数向方法传递参数时,程序会给实参的值做一份拷贝,并且将此拷贝传递给该方法,这样被调用的方法不会修改实参的值,所以使用值参数时,可以保证实参的值是安全的。但是如果参数类型是引用类型,如类的引用变量,则拷贝中存储的也是对象的引用,所以拷贝和实参引用同一个对象。通过这个拷贝,可以修改实参所引用的对象中的数据成员。


2.引用参数:

如果需要修改或得到方法外部的变量值,就需要用到引用参数。C#语言用引用参数向方法传递实参,程序将把实参的引用,即实参在内存中的地址传递给方法,方法通过实参的引用,修改或得到方法外部的变量值。引用参数必须要用ref修饰符声明。

注意:实参变量要求必须被设置了初始值。

 

using System;
class Cl{
    public int a=0;
}

class C2{
    public static void F1(ref char i){ //引用参数
        i='b';
    }
    public static void F2(char i){ //值参数,参数类型为值类型
        i='d';
    }


    static void Main(string[] args){
        char str='c';
        F2(str); //值参数,不能修改外部的str;
        F1(ref str);  //引用参数,可以修改外部的str;
    }
                            
}

3.输出参数:

为了把方法的运算结果保存到外部变量,因此需要知道外部变量的引用(地址)。输出参数用于向方法传递外部变量引用(地址),所以输出参数也是引用参数,与引用参数不同的是调用方法前不必对实参进行初始化。

using System;
class Cl{
    public int a=0;
}

class C2{
    public static void F1(out char i){ //输出参数
        i='b';
    }
    public static void F2(char i){ //值参数,参数类型为值类型
        i='d';
    }


    static void Main(string[] args){
        char str='c';
        char x;  //可以不初始化
        F2(str); //值参数,不能修改外部的str;
        F1(out x);  //输出参数,可以修改外部的x;
    }
                            
}

4.数组参数:

数组参数用params说明。

注意:(1)如果形参表中包含了数组参数,那么它必须是参数表中最后一个参数,数组参数只允许是一维数组。

           (2)数组参数不能再有ref和out修饰符。

using System;
class Class1{
    static void P(ref int sum,params int[] arr){
        int i;
        for (i = 0; i <= arr.Length - 1;i++ )
        {
            sum = sum + arr[i];
            arr[i] = arr[i] * arr[i];
        }
    }


    static void Main(string[] args)
    {
        int[] a = { 1, 2, 3 };
        int i;
        int s = 0;
        P(ref s,a);
        Console.WriteLine("和为:{0}",s);
        for (i = 0; i < a.Length;i++ )
        {
            Console.WriteLine("a[{0}]={1}",i,a[i]);

        }
        P(ref s, 23, 45);
        Console.WriteLine("和为:{0}",s);
        Console.ReadKey();

    }
}

注意:方法的参数为数组时也可以不使用params,此种方法就可以使用一维和多维数组。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值