c# 中ref 和out的區別

學習c# 也差不多兩年了。這幾週一直都在重溫C#的知識點。ref和out的區別到今天爲止總算是徹底的明白了。

兩者之間的共同點是:兩者都是傳遞參數地址。都能改變參數的值。

如例子中的傳遞參數num和num2,經過計算兩者的值都發生了改變;如果不用ref和out的關鍵字。num和num2 的值依然爲10。

不同點:1。ref 可以傳進傳出,而out的只出不進。

如例子中的Func() 中使用了out的關鍵字。如果在函數體中不對參數指定值。程序是會出錯的。而該函數會把i=2012的值傳到外面。

而 ref可以將參數的值傳到FunC中,也可以將Func中定義的參數的值傳出。如Sample 2 中的方法。

 

                                           SAMPLE 2
static void FunC(ref int i)
{
    int i=2012;

}

 

而out的,不能採用Sample 1 中的 FunC() 使用的方法。

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int num = 10;
            int num2=10;
            num = num * 2;
         
            Func(ref num);

            FunC(out num2);
            num2 = num2 * 2;
            Console.WriteLine("num的值爲:{0}",num);
            Console.WriteLine("num2的值爲:{0}", num2);
            Console.ReadKey();
        }
        static void Func(ref int i)
        { 
           
          
        }
        static void FunC(out int i)
        {

            i = 2012;
        }
    }
}

                           

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章