方法的参数传递机制(C#)

Posted 天梦Interact

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了方法的参数传递机制(C#)相关的知识,希望对你有一定的参考价值。

六 方法的参数传递机制

值参数,引用参数,输出参数

 

//参数的传递机制
using System;
class Method
{
    //值参数,传递的是数值本身,不改变外部变量的值
    public static void ValueMethod(int i)
    {
        i++;
    }
    //引用参数,传递的是数据地址,直接对数据进行操作,原值要变化
    //要注意的是string类型,赋值以后原值就不好改变了
    public static void ReferenceMethod(ref int i)
    {
        i++;
    }
    //输出参数,传递的也是地址,但是不同的是操作时一定要给变量赋初值
    public static void OutputMethod(out int i)
    {
        i=0;   //赋初值
        i++;
    }
    static void Main()
    { //对三种传值方式进行测试
        int i=0;         
        ValueMethod(i);
        Console.WriteLine("i="+i);   //输出为0,原值未改变
        int j=0;
        ReferenceMethod(ref j);
        Console.WriteLine("j="+j);   //输出为1,原值+1;
        int k;
        OutputMethod(out k);
        Console.WriteLine("k="+k);   //赋初值为0,输出为1。
    }
}

可变数量的参数

为了将方法声明为可以接受可变数量参数的方法,使用 params 关键字

/*
 * Created by SharpDevelop.
 * User: yangq
 * Date: 2016/8/27
 * Time: 23:57
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */

using System;
class Method
{
    static int addi(params int[] values) //参数的数量可以变化,以数组的形式存放
    {   //参数的写法为(1)或(1,2,3,4,5)                                 
        //方法是把所有的参数相加,返回和值
        int sum=0;
        foreach(int i in values)
            sum+=i;
        return sum;
    }
    static void Main()
    { 
        Console.WriteLine(addi(1,2,3,4,5)); //输出结果为15.
    }
}

 

以上是关于方法的参数传递机制(C#)的主要内容,如果未能解决你的问题,请参考以下文章

out参数不用赋值?这么神奇吗!

C# 将 Lambda 表达式作为方法参数传递

C# 再次理解委托事件与函数作为参数

C#参数知识盘点,形/实参值/引用传递refoutinparams可选命名等

C# 传递参数(值或引用)?

JavaSE面试题——方法的参数传递机制