学习笔记之---ref与out的区别
ref与out都是C#的关键字,所实现的功能也基本相同,都是指定一个参数按照引用传递,但是它们在使用时还是有一定的区别:
1.使用out关键字时,必须在离开函数体前给其赋值,而Ref传进去的参数可以不被修改。
2.out关键字传进去的参数调用前可以不用初始化,但是Ref穿进去的参数调用前必须初始化。
如:int i
MyMethod(ref i)//语法错误
MyMethod(out i)//正确
3.out关键字穿进去的参数不能直接被使用,而Ref则可以
如:MyMethod(ref int i)
{
int j=i;//正确
}
MyMethod(out int i){
int j=i;//语法错误
}
使用时各有优缺点,系统对ref的限制要少一点,out关键字传递参数对于函数体内部是不可见的,也就是说out关键字传进来的参数不可使用,并且在离开函数体前也一定要给out传进来的参数赋一个值。
若方法中一个带out/ref关键字,一个不带,则可以完成方法的重载,如下:
class RefOutOverloadExample
{
public void SampleMethod(int i) { }
public void SampleMethod(out int i) { }
}