c# ref與out的區(qū)別
相同點:都是輸出參數(shù)
不同點:
ref:
1、必須初始化,即:必須賦初始值;
2.有進(jìn)有出;
3、用在需要被調(diào)用的方法修改調(diào)用者的引用的時候。
4、是傳遞參數(shù)的地址
out:
1.不需要初始化,即:不需要賦初始值;
2、只出不進(jìn);
3、用在需要retrun多個返回值的地方;
4、返回值;
通過代碼更直觀的看出它們的區(qū)別:
ref:

1 class PRogram 2 { 3 static void Main(string[] args) 4 { 5 //num1,num2,必須賦值 6 int num1 = 10; 7 int num2 = 5; 8 Exchage(ref num1,ref num2);//調(diào)用方法,必須在變量前,必須加ref關(guān)鍵字 9 10 }11 /// <summary>12 /// 使用ref方法,參數(shù)必須加ref關(guān)鍵字13 /// </summary>14 /// <param name="num1"></param>15 /// <param name="num2"></param>16 private static void Exchage(ref int num1,ref int num2)17 {18 //交換前19 Console.WriteLine("num1的值:{0};num2的值:{1}", num1, num2);20 int temp = num1;21 num1 = num2;22 num2 = temp;23 //交換后24 Console.WriteLine("num1的值:{0};num2的值:{1}", num1, num2);25 Console.ReadKey();26 }View Code
out:

1 class Program 2 { 3 static void Main(string[] args) 4 { 5 int sum;//不需賦值,即使賦值,也會被覆蓋 6 NumSum(10,5,out sum); 7 Console.Write(sum); 8 Console.ReadKey(); 9 }10 /// <summary>11 /// 求和12 /// </summary>13 /// <param name="num1"></param>14 /// <param name="num2"></param>15 /// <param name="sum"></param>16 private static void NumSum(int num1,int num2,out int sum)17 {18 sum = num1 + num2;19 20 }21 }View Code 新聞熱點
疑難解答