學習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; } } }