ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ref和out区别

ref和out区别

原创 Linux操作系统 作者:iDotNetSpace 时间:2009-10-22 15:51:01 0 删除 编辑
方法参数上的   ref   方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。   
    
  若要使用   ref   参数,必须将参数作为   ref   参数显式传递到方法。ref   参数的值被传递到   ref   参数。   
    
  传递到   ref   参数的参数必须最先初始化。将此方法与   out   参数相比,后者的参数在传递到   out   参数之前不必显式初始化。   
    
  属性不是变量,不能作为   ref   参数传递。   
    
  如果两种方法的声明仅在它们对   ref   的使用方面不同,则将出现重载。但是,无法定义仅在   ref   和   out   方面不同的重载。例如,以下重载声明是有效的:   
    
  class   MyClass     
  {   
        public   void   MyMethod(int   i)   {i   =   10;}   
        public   void   MyMethod(ref   int   i)   {i   =   10;}   
  }   
  但以下重载声明是无效的:   
    
  class   MyClass     
  {   
        public   void   MyMethod(out   int   i)   {i   =   10;}   
        public   void   MyMethod(ref   int   i)   {i   =   10;}   
  }   
方法参数上的   out   方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。   
  当希望方法返回多个值时,声明   out   方法非常有用。使用   out   参数的方法仍然可以返回一个值。一个方法可以有一个以上的   out   参数。   
  若要使用   out   参数,必须将参数作为   out   参数显式传递到方法。out   参数的值不会传递到   out   参数。   
  不必初始化作为   out   参数传递的变量。然而,必须在方法返回之前为   out   参数赋值。   
  属性不是变量,不能作为   out   参数传递。   
  如果两个方法的声明仅在   out   的使用方面不同,则会发生重载。不过,无法定义仅在   ref   和   out   方面不同的重载。例如,以下重载声明是有效的:   
  class   MyClass     
  {   
        public   void   MyMethod(int   i)   {i   =   10;}   
        public   void   MyMethod(out   int   i)   {i   =   10;}   
  }   
  而以下重载声明是无效的:   
  class   MyClass     
  {   
        public   void   MyMethod(out   int   i)   {i   =   10;}   
        public   void   MyMethod(ref   int   i)   {i   =   10;}   
  } 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-617183/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5304148