黑马程序员技术交流社区

标题: out的简单小错误 [打印本页]

作者: 郑丹丹1990    时间: 2013-4-24 14:44
标题: out的简单小错误
本帖最后由 郑丹丹1990 于 2013-4-25 08:22 编辑
  1. static void GetRandomNumber(out int[] counts, out List<int> intArray)
  2.         {
  3.             Random ran = new Random();
  4.             int i = 0;
  5.             while (i <= 100) {
  6.              //产生随机数
  7.                 int num = ran.Next(0, 6);
  8.                 intArray.Add(num);
  9.                 //统计出现次数
  10.                 counts[num - 1]++;
  11.                 i++;
  12.             }
  13.            
  14.         }
复制代码
错误        1        使用了未赋值的 out 参数“intArray”        E:\Visual c#2008核心编程\exam\test10\Program.cs        32        17        test10
错误        4        控制离开当前方法之前必须对 out 参数“intArray”赋值        E:\Visual c#2008核心编程\exam\test10\Program.cs        25        21        test10

作者: 黄兴旺    时间: 2013-4-24 15:09
沙发。  我回帖是为了学技术。
作者: 高文咪    时间: 2013-4-24 15:09
你程序里是不是没给后面那个参数传值了啊
作者: 刘胜寒    时间: 2013-4-24 15:15
黄兴旺 发表于 2013-4-24 15:09
沙发。  我回帖是为了学技术。

我回贴是为了经验和金币
作者: 郑丹丹1990    时间: 2013-4-24 15:39
问题是我们有初始化。

  1. static void GetRandomNumber(out int[] counts, out List<int> intArray)
  2.         {
  3.    counts=new int[];
  4. intArray=new List<int>;
  5.             Random ran = new Random();
  6.             int i = 0;
  7.             while (i <= 100) {
  8.              //产生随机数
  9.                 int num = ran.Next(0, 6);
  10.                 intArray.Add(num);
  11.                 //统计出现次数
  12.                 counts[num - 1]++;
  13.                 i++;
  14.             }
  15.            
  16.         }
复制代码

作者: 高文咪    时间: 2013-4-24 16:19
counts=new int[];  这你都没给数组定义长度,就是你定义了长度,到下面你执行counts[num-1]++也会出错,因为你根本没法保证你的num数字就一定在你定义的数组范围内;
intArray=new List<int>;这句后面是要加括号的哦;
作者: 高文咪    时间: 2013-4-24 16:30
而且你也没给counts数组赋相对应的值,你就算可以执行,那每一次出来的结果不是0就是1,你这样做也没什么意义
作者: 杜磊    时间: 2013-4-24 20:20
首先你写这个方法,必是为了某处调用这个方法。
out是值传递,所以你在方法内部为这个out出去的变量赋了值,在外部你引用此方法的时候,也要对接收的这个变量赋值。
你可能是外部调用这个方法的时候没有给变量赋初始值,才会有你说的错误。
作者: 郑丹丹1990    时间: 2013-4-25 08:22
高文咪 发表于 2013-4-24 16:19
counts=new int[];  这你都没给数组定义长度,就是你定义了长度,到下面你执行counts[num-1]++也会出错,因 ...

初始化是手动敲上了,没在vs里,手误!




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