黑马程序员技术交流社区

标题: 关于out传参 [打印本页]

作者: 鲤鱼    时间: 2014-4-9 11:43
标题: 关于out传参
本帖最后由 鲤鱼 于 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传参的话就提不出来呢?

作者: 回忆~坚    时间: 2014-4-9 12:57
out这个关键字微软定义就是拿来输出的,所以传递之前可以不赋值,因为无意义,但是在方法体内一定要赋值,因为它要输出,它最终的目的是要拿到你方法体赋的值;
如果可以输入又可以输出那不是跟ref一样了么,那还要out来干嘛
作者: 鲤鱼    时间: 2014-4-9 13:10
本帖最后由 鲤鱼 于 2014-4-9 13:18 编辑
回忆~坚 发表于 2014-4-9 12:57
out这个关键字微软定义就是拿来输出的,所以传递之前可以不赋值,因为无意义,但是在方法体内一定要赋值, ...

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

不是说要out来干嘛,而是问既然可以传进来,为何不能取用。只因为你开头说的第一句:out这个关键字微软定义就是拿来输出的??{:3_66:}
作者: threederek    时间: 2014-4-9 15:47
out确实只是拿来输出用得
作者: 鲤鱼    时间: 2014-4-9 15:47
threederek 发表于 2014-4-9 15:47
out确实只是拿来输出用得

{:3_63:}只能暂且这样粗暴地理解了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2