C# 使用ref和out关键字

使用ref关键字,可以使参数按引用传递。当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。
若要使用ref关键字进行参数传递,则方法定义和调用方法都必须显示地使用ref关键字,而且使用ref关键字传递的参数必须最先进行初始化。
使用out关键字的方法与使用ref关键字的方法类似,同样会导致参数通过引用来传递。不同之处在于,使用out关键字传递的参数并不需要最先进行初始化,但需要在方法返回之前进行赋值。
若要使用out关键字传递参数,方法定义和调用方法都必须显示地使用out关键字。

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

namespace ConsoleApplication1
{
    class Program
    {
        static void refMethod(ref string s)
        {
            s = "wangyuanfeng";
        }

        static void outMethod(out int i,out string str1,out string str2)
        {
            i = 44;
            str1 = "I've been returned";
            str2 = null;
        }
                
        static void Main(string[] args)
        {
            string str = "old";
            int value = new int();
            string str1 = "old1";
            string str2 = "old2";
            
            Console.WriteLine("use ref:");
            Console.WriteLine("refMethod()before:\n str = {0}", str);
            refMethod(ref str);
            Console.WriteLine("refMethod() after :\n str = {0}", str);
            
            Console.WriteLine("use out:");
            Console.WriteLine("outMethod() before:\n nvalue = {0};nstr1 = {1},nstr2 = {2}", value, str1, str2);
            outMethod(out value, out str1, out str2);
            Console.WriteLine("outMethod() after:\n nvalue = {0},nstr1 = {1},nstr2 = {2}", value, str1, str2);

            Console.Read();
        }
    }
}

原文链接:http://www.douban.com/note/273675561/

posted on 2014-05-09 09:09  iwenr  阅读(218)  评论(0编辑  收藏  举报