相同點:都是輸出參數
不同點:
ref:
1、必須初始化,即:必須賦初始值;
2.有進有出;
3、用在需要被調用的方法修改調用者的引用的時候。
4、是傳遞參數的地址
out:
1.不需要初始化,即:不需要賦初始值;
2、只出不進;
3、用在需要retrun多個返回值的地方;
4、返回值;
通過代碼更直觀的看出它們的區別:
class Program { static void Main(string[] args) { //num1,num2,必須賦值 int num1 = 10; int num2 = 5; Exchage(ref num1,ref num2);//調用方法,必須在變量前,必須加ref關鍵字 } /// <summary> /// 使用ref方法,參數必須加ref關鍵字 /// </summary> /// <param name="num1"></param> /// <param name="num2"></param> private static void Exchage(ref int num1,ref int num2) { //交換前 Console.WriteLine("num1的值:{0};num2的值:{1}", num1, num2); int temp = num1; num1 = num2; num2 = temp; //交換後 Console.WriteLine("num1的值:{0};num2的值:{1}", num1, num2); Console.ReadKey(); }
class Program { static void Main(string[] args) { int sum;//不需賦值,即使賦值,也會被覆蓋 NumSum(10,5,out sum); Console.Write(sum); Console.ReadKey(); } /// <summary> /// 求和 /// </summary> /// <param name="num1"></param> /// <param name="num2"></param> /// <param name="sum"></param> private static void NumSum(int num1,int num2,out int sum) { sum = num1 + num2; } }