偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

淺析C# ArrayList

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

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

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

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

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

C# ChangeCo

2009-08-07 17:25:37

C# SortedLi

2009-08-25 17:59:49

C#入門

2021-10-26 10:22:27

ArrayList阿里云

2009-08-10 14:43:03

C#函數(shù)Convert

2009-09-11 09:15:06

C# get方法

2009-08-21 15:57:58

C# DataSour

2009-07-31 16:00:30

C#函數(shù)重載

2009-08-04 09:30:33

C#調(diào)用ImageAn

2009-08-12 17:03:39

C# Static修飾

2009-08-06 14:43:10

C# Calculat

2009-08-11 14:45:41

C# DataGrid

2009-08-20 10:10:55

C#透明窗體

2009-08-21 17:24:06

C# SingleIn

2009-08-18 10:30:30

C#枚舉

2009-08-12 15:20:21

C#事件處理

2009-08-17 13:34:02

C#異步操作

2009-08-26 13:07:07

C#交錯(cuò)數(shù)組

2009-08-27 11:43:31

C#語法
點(diǎn)贊
收藏

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