C#中的ref和out关键字
1、引用参数(ref)在可以作为引用参数在函数成员调用中传递之前,必须已明确赋值,而输出参数(out)在可以作为输出参数在函数成员调用中传递之前不一定要明确赋值,在该函数成员正常返回前都必须已明确赋值。
2、在函数内部,引用参数(ref)被视为初始已赋值,输出参数(out)被视为初始未赋值。
3、默认地,C#中的所有参数都是值传递。只有在参数的修饰符中明确包含out或ref,才是引用传递。但是需要知道的是,当参数的类型是引用类型时,你传递的是一个对象的引用而不是实际的对象。
out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。
比如:
SqlDataReader dataReader=null;
public void RunProc(string procName, out SqlDataReader dataReader)
{
//方法中得到一个SqlDataReader 赋值给dataReader
}
其他地方引用dataReader,dataReader的值就是方法中SqlDataReader的值。
用out 修饰,可变量值在被调函数中的改变反应到调用函数中,并且在使用前可以不初始化.
这里表示 dataReader 是按地址传参的,并且在使用dataReader之前必须初始化dataReader.