• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

小慧

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

ref和out区别

方法参数上的   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;}   
  } 

posted on 2009-10-22 09:18  小慧  阅读(497)  评论(1)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3