自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺析C# ArrayList

開發(fā) 后端
這里介紹C# ArrayList,其內(nèi)部是用一個object 數(shù)組實現(xiàn)的,作為一切元素的容器,值類型必須轉(zhuǎn)換成引用類型來儲存,不然就不需要2.0的Generic出現(xiàn)了。

在開始講解C# ArrayList.CopyTo()運行錯誤的解決方法之前,先給大家看一段代碼:

  1. ArrayList list = new ArrayList();   
  2. list.Add(1);   
  3. list.Add(2);   
  4. byte[] buf = new byte[2];   
  5. list.CopyTo(buf); 

這段代碼看上去,好正常,編譯也很順利通過,不過執(zhí)行的時候出錯了,為什么?

解剖C# ArrayList,其內(nèi)部是用一個object 數(shù)組實現(xiàn)的,作為一切元素的容器,值類型必須轉(zhuǎn)換成引用類型來儲存,不然就不需要2.0的Generic出現(xiàn)了。而CopyTo函數(shù)內(nèi)部是用Array.Copy()來實現(xiàn)的,問題就出在它身上。當(dāng)我們添加常量值到list里面,例如 list.Add(1),這里的1被看成是int,box儲存在object后再unbox回int,于是就變成高精度向低精度復(fù)制了 int[]->byte[],就出錯了,相當(dāng)于如下代碼:

  1. int[] a1 = new int[2]{1,2};   
  2. byte[] a2 = new byte[2];   
  3. Array.Copy( a1, a2, 2 ); 

回過頭來,原來的代碼要修改也很簡單,只要box之前把它變成小精度類型就可以了,修改后的代碼如下:

  1. ArrayList list = new ArrayList();   
  2. list.Add((byte)1);   
  3. list.Add((byte)2);   
  4. byte[] buf = new byte[2];   
  5. list.CopyTo(buf); 

以上介紹C# ArrayList

【編輯推薦】

  1. 介紹Mono C#編譯器
  2. C#運算符重載學(xué)習(xí)總結(jié)
  3. 概述C#語言的結(jié)構(gòu)體
  4. C#遺傳算法學(xué)習(xí)筆記
  5. 討論C#分部方法
責(zé)任編輯:佚名 來源: 51CTO.com
相關(guān)推薦

2009-08-12 18:35:36

C# ArrayLis

2009-08-07 17:25:37

C# SortedLi

2009-08-17 18:34:50

C# ChangeCo

2009-08-25 17:59:49

C#入門

2009-08-26 11:30:16

C# Arraylis

2021-10-26 10:22:27

ArrayList阿里云

2009-08-20 16:15:19

C# 匿名方法

2009-07-31 14:03:21

C# Format函數(shù)

2009-08-18 09:24:52

C# Anonymou

2009-08-20 14:45:13

C# Switch語句

2009-08-10 17:36:17

C#擴展方法

2009-08-26 13:07:07

C#交錯數(shù)組

2009-09-10 14:52:55

C# get

2009-08-17 13:34:02

C#異步操作

2009-08-21 17:24:06

C# SingleIn

2009-08-27 11:43:31

C#語法

2009-08-27 13:30:11

C# interfac

2009-08-14 15:23:10

C#使用ErrorPr

2009-08-12 15:20:21

C#事件處理

2009-08-18 10:30:30

C#枚舉
點贊
收藏

51CTO技術(shù)棧公眾號