Board logo

标题: 数组赋值 [打印本页]

作者: chuxuecsharp    时间: 2009-11-16 17:21     标题: 数组赋值

问题1:例10-24,请问以下代码:
      int [,] array2D=new int [100000,1000000];
            long length=array2D .LongLength
为什么不能显示出结果?

问题2:例10-29用System.Array类的SetValue()方法赋值时
      int [,] array2D=new int [10,100];
            array2D.SetValue (0,1) = 2008;
            却显示错误,为什么?
作者: dorient    时间: 2009-11-18 21:30

(1)Length属性返回int值,而LongLength属性返回long值。如果数组包含的元素个数超出了32位int值的取值范围,就需要使用LongLength属性,来获得元素个数.
作者: dorient    时间: 2009-11-18 21:33

array2D.SetValue (0,1)是调用了SetValue ()方法,而不能使用后面的"= 2008",这样会产生语法错误。
应该为:array2D.SetValue (2008,0,1)
作者: chuxuecsharp    时间: 2009-11-19 18:38

(1)Length属性返回int值,而LongLength属性返回long值。如果数组包含的元素个数超出了32位int值的取值范围,就需要使用LongLength属性,来获得元素个数.
dorient 发表于 2009-11-18 21:30
谢谢为我解答问题!
但还是不太明白,我第二句就是用的LongLength属性啊,但为什么编译的时候还是出错?
作者: dorient    时间: 2009-11-20 08:44

是不是“long length=array2D .LongLength” 缺少分号?
作者: chuxuecsharp    时间: 2009-11-20 10:34

是不是“long length=array2D .LongLength” 缺少分号?
dorient 发表于 2009-11-20 08:44
不是,以上没加分号是我的手误
错误提示信息在 int [,] array2D=new int [100000,1000000]; 句上
If you are creating an array, make sure the size is correct.
  Be sure you have enough memory to allocate for internal purposes and new managed objects.

是我的机器内存不够大的缘故?
作者: fwbook    时间: 2009-11-20 13:04

你创建的数组也太大了。你可以计算一下这个数组所需要的内容。100000×100000×4=40000000000字节。然后计算一下,40000000000/1024/1024=39146M>37G。你确认你的机器上有37G的内存吗?

不算不知道, 一算吓一跳。




欢迎光临 万卷图书 (http://wanjuanchina.net/) Powered by Discuz! 7.0.0