• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
付海宾的博客
专注自己做的事,做自己专注的事
博客园    首页    新随笔    联系   管理    订阅  订阅

学习笔记之---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) {  }
} 

posted @ 2011-03-15 08:41  Bingo_Fu  阅读(384)  评论(3)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3