ref和out 傳遞參數(C#)

來源:互聯網
上載者:User

標籤:

1.參數傳遞預設都是傳遞棧空間裡面儲存的內容

2.如果添加了ref那麼傳遞的都是棧空間地址,而不再是棧空間裡面的內容

3.如果添加了out,那麼傳遞的也是棧空間的地址

 

 1  //寫一個方法計算一個int類型數組中每個元素的總和以及最大值和最小值 2         /// <summary> 3         ///  4         /// </summary> 5         /// <param name="intArray"></param> 6         /// <returns></returns> 7         static void GatValue(int[] intArray, ref int sum, ref int max, ref int min) 8         { 9             10             sum = 0;11             max = intArray[0];12             min = intArray[0];13             for (int i = 0; i < intArray.Length; i++)14             { 15                 //總和16                 sum += intArray[i];17 18                 //最大值19                 if (max < intArray[i])20                 {21                     max = intArray[i];22                 }23 24                 //最小值25                 if (min > intArray[i])26                 {27                     min = intArray[i];28                 }29             }30         }
View Code

 

1  static void Main(string[] args)2         {   3             int[] intArray={1,2,3,4,5,6,7,8,9,10};4             int sum = 0, max = 0, min = 0;5             //int sum = 0, max = 0, min;     //如果min變數在使用的時候,沒有賦值,在使用ref關鍵字傳遞參數的時候,就會報錯,錯誤訊息:“使用了未賦值的局部變數”6             GatValue(intArray, ref sum,ref max,ref min);7             Console.Write(sum+" "+max+" "+min);8             Console.ReadKey();9         }
Mian函數

 

 1  static void Main(string[] args) 2         {    3             int[] intArray={1,2,3,4,5,6,7,8,9,10}; 4            // int sum = 0, max = 0, min = 0; 5             int sum = 0, max = 0, min; 6             GatValue(intArray, ref sum,ref max,out min); 7             Console.Write(sum+" "+max+" "+min); 8             Console.ReadKey(); 9         }10 11 12 13   static void GatValue(int[] intArray, ref int sum, ref int max, out int min)14         {15             16             sum = 0;17             max = intArray[0];18             min = intArray[0];19             for (int i = 0; i < intArray.Length; i++)20             { 21                 //總和22                 sum += intArray[i];23 24                 //最大值25                 if (max < intArray[i])26                 {27                     max = intArray[i];28                 }29 30                 //最小值31                 if (min > intArray[i])32                 {33                     min = intArray[i];34                 }35             }36         }
min變數out傳遞參數

 

 1   static void GatValue(int[] intArray, ref int sum, ref int max, out int min) 2         { 3             //這裡要返回三個變數的值,只能是,通過傳回值調用了 4             sum = 0; 5             max = intArray[0]; 6            // min = intArray[0]; 7             for (int i = 0; i < intArray.Length; i++) 8             {  9                 //總和10                 sum += intArray[i];11 12                 //最大值13                 if (max < intArray[i])14                 {15                     max = intArray[i];16                 }17 18                 ////最小值19                 //if (min > intArray[i])20                 //{21                 //    min = intArray[i];22                 //}23             }24         }25 26 27 28   static void Main(string[] args)29         {   30             int[] intArray={1,2,3,4,5,6,7,8,9,10};31            // int sum = 0, max = 0, min = 0;32             int sum = 0, max = 0, min;33             GatValue(intArray, ref sum,ref max,out min);34             Console.Write(sum+" "+max+" "+min);35             Console.ReadKey();36         }
錯誤的例子,out參數在使用的時候,必須在方法體內,為變數賦值

這裡第四個程式碼片段,裡面,使用了out參數傳遞的變數min,在方法體內沒有被賦值,啟動並執行時候會報錯:“ 控制離開當前方法之前必須對 out 參數“min”賦值 “

 

區別:ref傳遞的參數必須先賦值再使用;

        out可以賦值也可以不賦值,但是在方法體內必須重新賦值。

ref和out 傳遞參數(C#)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.