与ref关键字一样,out关键字也是按引用来传递的.
示例演示了out关键字的使用方法,其功能是获取数组中的最大值和最大值的索引
using System;
using System.Collections.Generic;
using System.Text;
namespace sampsong
{
class Program1
{
///<summary>
///求数组的最大值和最大值的索引
///</summary>
///<param name="m_Array" >传入的数组</param>
///<param name="m_Index" >要求的最大索引</param>
///<returns >数组中的最大值</returns>
static int MaxIndex(int[] m_Array, out int m_Index)
{
m_Index = 0;
int m_Max = m_Array[0];
for (int i = 0; i < m_Array.Length; i++)
{
if (m_Array[i] > m_Max)
{
m_Max = m_Array[i];
m_Index = i;
}
}
return m_Max;
}
static void Main(String[] args)
{
int[] myArray=new int[5]{56,89,425,21,21};
int maxIndex;
Console .WriteLine ("数组中最大的值为:{0}",MaxIndex (myArray ,out maxIndex ));
//调用MaxIndex方法后 maxIndex的值为2
Console .WriteLine ("数组中最大的值是第{0}元素",maxIndex+1);
}
}
}
数组中最大的值为:425 数组中最大的值是第3元素 请按任意键继续. . .
说明:
1.out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于ref 要求变量必须在传递之前进行初始化。
2.方法定义和调用方法都必须显式使用 out 关键字。
3.属性不是变量,因此不能作为 out 参数传递。
4.示例
using System;
using System.Collections.Generic;
using System.Text;
namespace sampsong
{
class Program1
{
static void Method(out String name, out int grad,out String school)
{
name = "宋井华";
grad = 2005;
school = "郑州大学";
}
static void Main(String[] args)
{
String Name;
String School;
int Grad;
Method(out Name,out Grad,out School);
Console.WriteLine("调用方法Method后");
Console.WriteLine("学生" + Name + "是" + School + Grad + "级学生");
}
}
}
运行结果
调用方法Method后