最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# 中 Array和 ArrayList詳解及區(qū)別

 更新時間:2017年01月21日 15:32:58   投稿:lqh  
這篇文章主要介紹了C# 中 Array和 ArrayList詳解及區(qū)別的相關(guān)資料,需要的朋友可以參考下

C# 中 Array和 ArrayList詳解及區(qū)別

一、Array 的用法

  type[]  typename=new type[size]; 

  或者  

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

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

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

   如:

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

     int[] a=new int[2]; string [] srt=new string[3];

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

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

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

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

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

二,C# ArrayList數(shù)組的用法:

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相互之間的轉(zhuǎn)化

 var arrayList = new List<int>();
      arrayList.Add(1);
      arrayList.Add(2);
      arrayList.Add(50);

      //ArrayList 數(shù)組中的值拷貝到Array中去
      int[] array1=new int[arrayList.Count];
      arrayList.CopyTo(array1); //方法一
      int[] array2 = arrayList.ToArray(); //方法二

四、[Array和ArrayList的區(qū)別]

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

如: 

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

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

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

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

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

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

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

#4 初始化大小

Array對象的初始化必須只定指定大小,且創(chuàng)建后的數(shù)組大小是固定的,

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

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

五、[Array和ArrayList的相似點]

#1 都具有索引(index),即可以通過index來直接獲取和修改任意項。
#2 他們所創(chuàng)建的對象都放在托管堆中。
#3 都能夠?qū)ψ陨磉M行枚舉(因為都實現(xiàn)了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時,輸出結(jié)果中的"current capacity"為2,
當size為3或4時,"current capacity"為4,
當size為5~8時,"current capacity"為8,
當size為9~16時,"current capacity"為16,

通過實驗可以得出一個結(jié)論,那就是每當ArrayList中的實際存在的對象數(shù)(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

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

相關(guān)文章

  • C#?WPF實現(xiàn)3D操作幾何體效果

    C#?WPF實現(xiàn)3D操作幾何體效果

    眾所周知,我的世界就是無數(shù)個像素塊的集合,而像素塊也就是立方體。關(guān)于新建立方體,這個大家已經(jīng)非常熟練了,本文就來說說如何實現(xiàn)3D操作幾何體效果吧
    2023-03-03
  • C#創(chuàng)建自定義控件及添加自定義屬性和事件使用實例詳解

    C#創(chuàng)建自定義控件及添加自定義屬性和事件使用實例詳解

    這篇文章主要給大家介紹了關(guān)于C#創(chuàng)建自定義控件及添加自定義屬性和事件使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C#具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-05-05
  • C#中處理JSON數(shù)據(jù)的方式示例詳解

    C#中處理JSON數(shù)據(jù)的方式示例詳解

    在C#中,可以使用System.Text.Json和Newtonsoft.Json這兩個流行的庫來將對象序列化為JSON字符串,本文給大家介紹C#中處理JSON數(shù)據(jù)的方式,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • 使用C#自制一個Windows安裝包的詳細過程

    使用C#自制一個Windows安裝包的詳細過程

    這篇文章主要介紹了如何使用C#自制一個Windows安裝包,文中通過圖文結(jié)合的方式給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-07-07
  • Unity3D實現(xiàn)模型淡入淡出效果

    Unity3D實現(xiàn)模型淡入淡出效果

    這篇文章主要為大家詳細介紹了Unity3D實現(xiàn)模型淡出效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C#實現(xiàn)DataTable數(shù)據(jù)行列轉(zhuǎn)換

    C#實現(xiàn)DataTable數(shù)據(jù)行列轉(zhuǎn)換

    這篇文章介紹了C#實現(xiàn)DataTable數(shù)據(jù)行列轉(zhuǎn)換的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • c# 值類型實例構(gòu)造器

    c# 值類型實例構(gòu)造器

    CLR總是允許創(chuàng)建值類型的實例。另外值類型不一定需要定義構(gòu)造器,c#編譯器不會為值類型生成默認的無參構(gòu)造器
    2012-10-10
  • datagridview實現(xiàn)手動添加行數(shù)據(jù)

    datagridview實現(xiàn)手動添加行數(shù)據(jù)

    這篇文章主要介紹了datagridview實現(xiàn)手動添加行數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Unity實現(xiàn)3D貪吃蛇的移動代碼

    Unity實現(xiàn)3D貪吃蛇的移動代碼

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)3D貪吃蛇的移動代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • 詳解C#中的System.Timers.Timer定時器的使用和定時自動清理內(nèi)存應(yīng)用

    詳解C#中的System.Timers.Timer定時器的使用和定時自動清理內(nèi)存應(yīng)用

    這篇文章主要介紹了詳解C#中的System.Timers.Timer定時器的使用和定時自動清理內(nèi)存應(yīng)用,需要的朋友可以參考下
    2017-06-06

最新評論

福海县| 屏边| 株洲市| 南阳市| 揭阳市| 札达县| 龙州县| 长沙县| 安新县| 贵阳市| 平泉县| 水城县| 岱山县| 巫溪县| 图们市| 苏尼特右旗| 隆昌县| 鄂托克前旗| 博客| 礼泉县| 兴城市| 鲁山县| 新密市| 辛集市| 衢州市| 保康县| 台安县| 呼和浩特市| 五莲县| 博客| 中阳县| 芮城县| 光山县| 衢州市| 鹤峰县| 阳信县| 华池县| 根河市| 东乌| 寿阳县| 友谊县|