c#方法的参数类型

值参数

修饰符

值参数是没有任何修饰符声明的参数。

功能

当使用值类型的参数调用方法时,编译程序将实参的值作为一副本,并将副本的值传递给该方法的形参,这样就可以保证对形参所作的任何操作都不会影响实参。值参数相当于局部变量,在方法被调用时,由系统会为其分配内存空间,方法调用结束后,存储空间被回收。

应用举例

class Program
    {
        public static void Fun(int a)
        {
            a += 5;
            Console.WriteLine("a={0}",a);
        }
        static void Main(string[] args)
        {
            int b = 10;
            Fun(b);
            Console.WriteLine("b={0}", b);
            Console.ReadLine();
        }
    }

值参数运行结果

引用参数

修饰符

声明方法时,在形参列表中使用 ref 修饰符声明的形参是引用参数。

功能

引用参数不创建新的存储位置,在参数传递的过程中,编译程序将原实参的地址传递给引用参数,是得实参和引用参数都指向相同的地址。在程序中对引用参数的修改就是对相应的实参的修改,

应用举例

class Program
    {
        public static void Fun(ref int a)
        {
            a += 5;
            Console.WriteLine("a={0}",a);
        }
        static void Main(string[] args)
        {
            int b = 10;
            Fun(ref b);
            Console.WriteLine("b={0}", b);
            Console.ReadLine();
        }
    }

引用参数运行结果

输出参数

修饰符

声明方法时,在形参列表中使用 out 修饰符声明的形参是输出参数。

功能

输出参数适用于有多个计算结果的方法。输出参数与应用参数类似的地方是都不为形参创建新的存储位置,在方法中对输出参数的任何操作都会影响实参。两者不同的是调用带有输出参数的方法之前,不需要对传递给形参的实参进行初始化,方法调用完成后,实参变量会被方法中的形参赋值。

应用举例

class Program
    {
        public static void calc(int x,int y,out int cAdd,out int cSub)
        {
            cAdd = x + y;
            cSub = x - y;
        }
        static void Main(string[] args)
        {
            int n1 = 10, n2 = 5;
            int add, sub;
            calc(n1,n2,out add,out sub);
            Console.WriteLine("n1={0},n2={1}",n1,n2);
            Console.WriteLine("add={0}",add);
            Console.WriteLine("sub={0}",sub);
            Console.ReadLine();
        }
    }

输出参数运行结果

数组参数

修饰符

声明方法时,在形参列表中使用 params 修饰符声明的形参时数组参数。

功能

如果一个形参列表中包含数组参数,那么它必须位于参数列表的最后面,而且是一维数组类型。并且不可能将 params 修饰符与 refout 修饰符组合使用。数组参数适用于方法的参数个数不确定的情况,这样可以在调用方法过程中传递实参个数。

应用举例

class Program
    {
        public static void MutiParams(params int[] var)
        {
            for (int i = 0; i < var.Length; i++)
            {
                Console.WriteLine("var[{0}]={1}",i,var[i]);
            }
            Console.WriteLine("---------------------");
        }
        static void Main(string[] args)
        {
            int[] arr = { 10, 20, 30 };
            MutiParams(arr);
            MutiParams(100, 200);
            Console.ReadLine();
        }
    }

数组参数运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值