A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 鲤鱼 中级黑马   /  2014-4-9 11:43  /  1584 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 鲤鱼 于 2014-4-9 15:48 编辑

在静态方法中,如果我不用ref来传输。out主要是被调用者传出参数给调用者,可是如果调用者对这个参数进行赋值,实际上这个值是可以传到被调用方法中的,可是不能被拿来使用。只能重新赋值。

我在想,究竟是什么限制了out 只能传出而不能把传入的值提取使用。{:3_65:}
  1. static void Main(string[] args)
  2.         {
  3.        int digital=100;
  4.        int accept = Test(out digital);
  5.          }
  6.         public static int Test(out int accept)
  7.         {
  8.             //int b = accept;赋值之前不可以使用 因为out只能传出,传入的值无法用。
  9.             accept = 10;
  10.             Console.WriteLine(accept);
  11.             return 10;
  12.         }
复制代码



为啥这个100在静态方法中out传参的话就提不出来呢?

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

4 个回复

正序浏览
threederek 发表于 2014-4-9 15:47
out确实只是拿来输出用得

{:3_63:}只能暂且这样粗暴地理解了
回复 使用道具 举报
out确实只是拿来输出用得
回复 使用道具 举报
本帖最后由 鲤鱼 于 2014-4-9 13:18 编辑
回忆~坚 发表于 2014-4-9 12:57
out这个关键字微软定义就是拿来输出的,所以传递之前可以不赋值,因为无意义,但是在方法体内一定要赋值, ...

{:3_66:}我的问题是既然是拿来输出的,为何能传进一个值却不能使用呢?

不是说要out来干嘛,而是问既然可以传进来,为何不能取用。只因为你开头说的第一句:out这个关键字微软定义就是拿来输出的??{:3_66:}
回复 使用道具 举报
out这个关键字微软定义就是拿来输出的,所以传递之前可以不赋值,因为无意义,但是在方法体内一定要赋值,因为它要输出,它最终的目的是要拿到你方法体赋的值;
如果可以输入又可以输出那不是跟ref一样了么,那还要out来干嘛

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马