国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C# 中 Array和 ArrayList詳解及區別

2019-10-29 21:15:34
字體:
來源:轉載
供稿:網友

C# 中 Array和 ArrayList詳解及區別

一、Array 的用法

  type[]  typename=new type[size]; 

  或者  

 type[]  typename=new type[]{ }; 

 Array類型的變量在聲明的同時必須進行實例化(如果初始化至少得初始化數組的大小)

 平常我們int[],string[]...事實上就是聲明一個array數組了

   如:

 string [] srt=new string[]{"a","b"};     int[] a=new int[2]; string [] srt=new string[3];

(1):type數據類型不能缺;且要統一,而不能是如 int[] a=new Array[];

(2):數組的大小size不能缺,否則c#認為是出錯的,因為數組是一段固定長度的內存;

(3):右邊是一個中括號[],而不是()

注:array數組并不提供add,clear,addRange..方法,而是直接設置或獲取值

如:a[0] = 0;  a[1] = 1;

二,C# ArrayList數組的用法:

var arrayList = new ArrayList();      arrayList.Add(1);      arrayList.Add(2);      arrayList.Add(50.0); //在.net 4.0 支持。具體為什么還沒有研究       foreach (var array in arrayList)      {        Console.WriteLine(array);      }

三,ArrayList和Array相互之間的轉化

 var arrayList = new List<int>();      arrayList.Add(1);      arrayList.Add(2);      arrayList.Add(50);      //ArrayList 數組中的值拷貝到Array中去      int[] array1=new int[arrayList.Count];      arrayList.CopyTo(array1); //方法一      int[] array2 = arrayList.ToArray(); //方法二

四、[Array和ArrayList的區別]

#1. Array類型的變量在聲明的同時必須進行實例化(至少得初始化數組的大小),而ArrayList可以只是先聲明。

如: 

int[] array = new array[3]; 或 int[] array = {1,2,3}; 或 ArrayList myList = new ArrayList();

這些都是合法的,而直接使用 int[] array;是不行的。

#2. Array只能存儲同構的對象,而ArrayList可以存儲異構的對象。

同構的對象是指類型相同的對象,若聲明為int[]的數組就只能存放整形數據,string[]只能存放字符型數據,但聲明為object[]的數組除外。

而ArrayList可以存放任何不同類型的數據(因為它里面存放的都是被裝箱了的Object型對象,實際上ArrayList內部就是使用"object[] _items;"這樣一個私有字段來封裝對象的)

#3 在CLR托管對中的存放方式

Array是始終是連續存放的,而ArrayList的存放不一定連續。

#4 初始化大小

Array對象的初始化必須只定指定大小,且創建后的數組大小是固定的,

而ArrayList的大小可以動態指定,其大小可以在初始化時指定,也可以不指定,也就是說該對象的空間可以任意增加。

#5 Array不能夠隨意添加和刪除其中的項,而ArrayList可以在任意位置插入和刪除項。

五、[Array和ArrayList的相似點]

#1 都具有索引(index),即可以通過index來直接獲取和修改任意項。
#2 他們所創建的對象都放在托管堆中。
#3 都能夠對自身進行枚舉(因為都實現了IEnumerable接口)。

六 、[ArrayList的一些特性]

var arrayList = new List<int>(2); Console.WriteLine(arrayList.Capacity);            int size = 2;      for (int i = 0; i < size; i++)      {        arrayList.Add(i);      }         Console.WriteLine("compressed capacity:"+arrayList.Capacity); 

當size為2時,輸出結果中的"current capacity"為2,
當size為3或4時,"current capacity"為4,
當size為5~8時,"current capacity"為8,
當size為9~16時,"current capacity"為16,

通過實驗可以得出一個結論,那就是每當ArrayList中的實際存在的對象數(ArrayList.Count)超過了自身的Capacity閥值,那么該閥值會自動翻倍

 ArrayList myList = new ArrayList(5);      for (int i = 0; i < 3; i++)      {        myList.Add(i);      }      Console.WriteLine("actual capacity:" + myList.Capacity);      myList.TrimToSize();      Console.WriteLine("compressed capacity:" + myList.Capacity);            Console.ReadLine();

輸出:

actual capacity:5compressed capacity:3

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吕梁市| 瑞昌市| 和田县| 思南县| 侯马市| 灵寿县| 河源市| 光泽县| 化德县| 茌平县| 子洲县| 资溪县| 信阳市| 中卫市| 甘泉县| 宁夏| 高安市| 崇礼县| 恭城| 新龙县| 兴和县| 信丰县| 白河县| 定西市| 永济市| 新平| 庆阳市| 铜陵市| 南漳县| 随州市| 义乌市| 舟山市| 永康市| 正安县| 白山市| 台中县| 光泽县| 镇江市| 龙南县| 莒南县| 开封市|