C#中ArrayList.CopyTo()运行错误的解决方法

gaofei1314gf

gaofei1314gf

2016-02-19 13:47

下面,图老师小编带您去了解一下C#中ArrayList.CopyTo()运行错误的解决方法,生活就是不断的发现新事物,get新技能~

  在开始讲解C#中ArrayList.CopyTo()运行错误的解决方法之前,先给大家看一段代码:

以下是引用片段:
ArrayList list = new ArrayList();
  list.Add(1);
  list.Add(2);
  byte[] buf = new byte[2];
  list.CopyTo(buf);

  这段代码看上去,好正常,编译也很顺利通过,不过执行的时候出错了,为什么?

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  解剖ArrayList,其内部是用一个object 数组实现的,作为一切元素的容器,值类型必须转换成引用类型来储存,不然就不需要2.0的Generic出现了。 而CopyTo函数内部是用Array.Copy()来实现的,问题就出在它身上。当我们添加常量值到list里面,例如 list.Add(1),这里的1被看成是int,box储存在object后再unbox回int,于是就变成高精度向低精度复制了 int[]-byte[],就出错了,相当于如下代码:

以下是引用片段:
  int[] a1 = new int[2]{1,2};
  byte[] a2 = new byte[2];
  Array.Copy( a1, a2, 2 );

  回过头来,原来的代码要修改也很简单,只要box之前把它变成小精度类型就可以了,修改后的代码如下:

以下是引用片段:
  ArrayList list = new ArrayList();
  list.Add((byte)1);
  list.Add((byte)2);
  byte[] buf = new byte[2];
  list.CopyTo(buf);

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

C#中ArrayList.CopyTo()运行错误的解决方法

编程语言 网络编程
C#中ArrayList.CopyTo()运行错误的解决方法

Dreamweaver在运行时发生的JavaScript错误的解决方法

Web开发
Dreamweaver在运行时发生的JavaScript错误的解决方法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

常见的错误及其解决方法

ASP
常见的错误及其解决方法

禁止运行组策略的解决方法

windows 操作系统
禁止运行组策略的解决方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

卡巴运行问题分析解决方法

电脑入门
卡巴运行问题分析解决方法

C#中操作Excel的方法(一)

电脑网络
C#中操作Excel的方法(一)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

C#中如何调用Delphi写的Dll

C#中如何调用Delphi写的Dll

C#编程 忘记密码功能的实现方法

C#编程 忘记密码功能的实现方法
下拉加载更多内容 ↓