首頁 後端開發 C#.Net教程 詳解C#中Array和ArrayList的區別

詳解C#中Array和ArrayList的區別

Mar 28, 2017 am 11:44 AM

這篇文章主要介紹了C# 中Array和ArrayList詳解及區別的相關資料,需要的朋友可以參考下

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:5
compressed capacity:3
登入後複製

以上是詳解C#中Array和ArrayList的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

使用 C# 的活動目錄 使用 C# 的活動目錄 Sep 03, 2024 pm 03:33 PM

使用 C# 的 Active Directory 指南。在這裡,我們討論 Active Directory 在 C# 中的介紹和工作原理以及語法和範例。

C# 序列化 C# 序列化 Sep 03, 2024 pm 03:30 PM

C# 序列化指南。這裡我們分別討論C#序列化物件的介紹、步驟、工作原理和範例。

C# 中的隨機數產生器 C# 中的隨機數產生器 Sep 03, 2024 pm 03:34 PM

C# 隨機數產生器指南。在這裡,我們討論隨機數產生器的工作原理、偽隨機數和安全數的概念。

C# 資料網格視圖 C# 資料網格視圖 Sep 03, 2024 pm 03:32 PM

C# 資料網格視圖指南。在這裡,我們討論如何從 SQL 資料庫或 Excel 檔案載入和匯出資料網格視圖的範例。

C# 中的階乘 C# 中的階乘 Sep 03, 2024 pm 03:34 PM

C# 階乘指南。這裡我們討論 C# 中階乘的介紹以及不同的範例和程式碼實作。

C# 中的模式 C# 中的模式 Sep 03, 2024 pm 03:33 PM

C# 模式指南。在這裡,我們討論 C# 中模式的介紹和前 3 種類型,以及其範例和程式碼實作。

C# 中的質數 C# 中的質數 Sep 03, 2024 pm 03:35 PM

C# 質數指南。這裡我們討論c#中素數的介紹和範例以及程式碼實作。

c#多線程和異步的區別 c#多線程和異步的區別 Apr 03, 2025 pm 02:57 PM

多線程和異步的區別在於,多線程同時執行多個線程,而異步在不阻塞當前線程的情況下執行操作。多線程用於計算密集型任務,而異步用於用戶交互操作。多線程的優勢是提高計算性能,異步的優勢是不阻塞 UI 線程。選擇多線程還是異步取決於任務性質:計算密集型任務使用多線程,與外部資源交互且需要保持 UI 響應的任務使用異步。

See all articles