一丶与ref关键字一样,out关键字也是按引用来传递的.out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字

尽管作为 out 参数传递的变量不需要在传递之前进行初始化,但需要调用方法以便在方法返回之前赋值。

我们发现,ref和out似乎可以实现相同的功能.因为都可以改变传递到方法中的变量的值.但是,二者本质的区别就是,ref是传入值,out是传出值.在含有out关键字的方法中,变量必须由方法参数中不含out(可以是ref)的变量赋值或者由全局(即方法可以使用的该方法外部变量)变量赋值,out的宗旨是保证每一个传出变量都必须被赋值

示例演示了out关键字的使用方法,其功能是获取数组中的最大值和最大值的索引

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace Out_Key
 8 {
 9     class Program
10     {
11         ///<summary>
12         ///求数组的最大值和最大值的索引
13         ///</summary>
14         ///<param name="m_Array" >传入的数组</param>
15         ///<param name="m_Index" >要求的最大索引</param>
16         ///<returns >数组中的最大值</returns>
17         static int MaxIndex(int[] m_Array, out int m_Index)
18         {
19             m_Index = 0;
20             int m_Max = m_Array[0];
21 
22             for (int i = 0; i < m_Array.Length; i++)
23             {
24                 if (m_Array[i] > m_Max)
25                 {
26                     m_Max = m_Array[i];
27                     m_Index = i;
28                 }
29             }
30 
31             return m_Max;
32         }
33         static void Main(String[] args)
34         {
35             int[] myArray = new int[5] { 56, 89, 425, 21, 21 };
36             int maxIndex;
37             Console.WriteLine("数组中最大的值为:{0}", MaxIndex(myArray, out maxIndex));
38             //调用MaxIndex方法后  maxIndex的值为2
39             Console.WriteLine("数组中最大的值是第{0}元素", maxIndex + 1);
40             Console.ReadKey();
41         }
42     }
43 }
View Code

相关文章: