C#中的ref与out参数(本文仅作为个人笔记)

     假如一个方法的参数(形参)是引用类型,那么使用那个参数来进行的任何修改都会改变参数引用的数据。但这里的关键在于,虽然引用的数据发生了变化,但参数本生没有改变——它仍然引用的是一个对象。换句话说,虽然可以通过参数来修改实参引用的对象,但是不可能修改实参本身。这个时候就需要ref和out参数。

ref参数:实参中的ref参数必须先初始化,否则编译出错

using System.Text;

namespace RefAndOutParam
{
    class Program
    {
        static void TestRefParam(ref int refParam)
        {
            refParam++;
        }
        static void TestParam(int param)
        {
            param++;
        }
        
        static void Main(string[] args)
        {
            int test = 10;
            int testRef = 10;
            TestParam(test);
            TestRefParam(ref testRef);

            Console.WriteLine("The origin value is 10 ;No ref value {0}\t,ref value {1}",test,testRef);

        }
    }
}

运行结果:

若程序希望传递未初始化的参数可以选择out参数。

out参数:必须对作为形参的out参数进行初始化操作,否则无法通过编译

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace RefAndOutParam
{
    class OutParam
    {
        static void TestOutParam(out int outParam)
        {
            outParam = 1;
        }
        static void Main(string[] args) {
            int outParams;
            TestOutParam(out outParams);
            Console.WriteLine(outParams);
        }
    }
}

输出结果:

 

 

posted @ 2013-09-21 19:11  谢佳东/馨予希  阅读(288)  评论(0编辑  收藏  举报