现在的位置: 首页 > 综合 > 正文

学习笔记之—ref与out的区别

2013年03月08日 ⁄ 综合 ⁄ 共 599字 ⁄ 字号 评论关闭

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) {  }

抱歉!评论已关闭.