C 新建陣列

2021-08-02 04:11:12 字數 2760 閱讀 5312

int num = ;
int  num1=new int[10];

num1[2] = 9;

int in1 = ;

var arr = new int ;

陣列建立可以包含許多物件或值的變數型別。但陣列有一定的限制。最大的限制是一旦建立好陣列,它們的大小就是固定的,不能在現有陣列的末尾新增新項,除非建立乙個新的陣列。

集合類一般用於處理物件列表,其功能比簡單陣列要多,功能大多是通過實現system.collections 命名空間中的介面而獲得的,因此集合的語法已經標準化.

集合的功能(包括基本功能,例如,用[index]語法訪問集合中的項)可以通過介面來實現,該介面不僅沒有限制我們使用基本集合類,例如system.array,相反,我們還可以建立自己的定製集合類。這些集合可以專用於要列舉的物件(即要從中建立集合的物件)。這麼做的乙個優點是定製的集合類可以是強型別化的。也就是說,從集合中提取項時,不需要把它們轉換為正確的型別。另乙個優點是提供專用的方法.

system.collections 命名空間中的幾個介面提供了基本的組合功能:

 ienumerable 可以迭代集合中的項。

 icollection(繼承於ienumerable)可以獲取集合中項的個數,並能把項複製到乙個簡單的陣列型別中。

 ilist(繼承於ienumerable 和icollection)提供了集合的項列表,允許訪問這些項,並提供其他一些與項列表相關的基本功能。

 idictionary(繼承於ienumerable 和icollection)類似於ilist,但提供了可通過鍵值(而不是索引)訪問的項列表。

陣列與集合的區別

對於簡單的陣列來說,只有用固定的大小來初始化陣列,才能使用它。標準語法建立陣列animalarray。

animal animalarray = new animal[2];

而arraylist 集合不需要初始化其大小,所以可以使用以下**建立列表animalarraylist:

arraylist animalarraylist = new arraylist();

這個類還有另外兩個建構函式。第乙個建構函式把現有的集合作為乙個引數,把現有集合的內容複製到新例項中;而另乙個建構函式通過乙個引數設定集合的容量(capacity)。這個容量用乙個int值指定,設定集合中可以包含的初始項數。但這並不是真實的容量,因為如果集合中的項數超過了這個值,容量就會自動增加一倍。

因為陣列是引用型別(例如,animal 和animal 派生的物件),所以用乙個長度初始化陣列並沒有初始化它所包含的項。要使用乙個指定的項,該項還需要初始化,即需要給這個項賦予初始化了的物件。

arraylist 集合可以用addrange()方法一次新增好幾個項。這個方法接受帶有icollection 介面的任何物件,包括前面的**所建立的animalarray 陣列:

animalarraylist.addrange(animalarray);

迭代器迭代器的定義是,它是乙個**塊,按順序提供了要在foreach 迴圈中使用的所有值。一般情況下,這個**塊是乙個方法,但也可以使用屬性訪問器和其他**作為為迭代器

無論**塊是什麼,其返回型別都是有限制的。與期望正好相反,這個返回型別與所列舉的物件典型不同。兩種可能的返回型別是前面提到的介面型別lienumerable 和ienumerator。使用這兩個型別的場合是:

 如果要迭代乙個類,可使用方法getenumerator(),其返回型別是ienumerator。

 如果要迭代乙個類成員,例如乙個方法,則使用ienumerable。

在迭代器塊中,使用yield 關鍵字選擇要在foreach 迴圈中使用的值。其語法如下:

yield return ;

可以實現乙個迭代器,來控制迴圈**如何在其迴圈過程中取值。要迭代乙個類,需要實現getenumerator()方法,其返回型別是ienumerator。要迭代類的成員,例如方法,可以使用ienumerable返回型別。在迭代器的**塊中,使用yield 關鍵字返回值

is 運算子的語法如下:

is 這個表示式的結果如下:

 如果是乙個類型別,而也是該型別,或者它繼承了該型別,或者它可以封箱到該型別中,則結果為true。

 如果是乙個介面型別,而也是該型別,或者它是實現該介面的型別,則結果為true。

 如果是乙個值型別,而也是該型別,或者它可以拆箱到該型別中,則結果為true。

icomparable 和icomparer 介面是.net framework 中比較物件的標準方式。這兩個介面之間的差別如下:

 icomparable 在要比較的物件的類中實現,可以比較該物件和另乙個物件。

 icomparer 在乙個單獨的類中實現,可以比較任意兩個物件

一般使用icomparable 給出類的預設比較**,使用其他類給出非預設的比較**。icomparable 提供了乙個方法compareto(),這個方法接受乙個物件。

.net framework 在類comparer 上提供了icomparer 介面的預設實現方式,類comparer 位於

system.collections 命名空間中,可以對簡單型別以及支援icomparable 介面的任意型別進行特定文化的比較

as 運算子使用下面的語法,把一種型別轉換為指定的引用型別:

as 這只適用於下列情況:

 的型別是型別

 可以隱式轉換為型別

 可以封箱到型別中

如果不能從轉換為,則表示式的結果就是null。

新建陣列 陣列的索引 與長度

2.陣列的索引 與 長度 總結 new array 5 中5是陣列長度 乙個引數 new array 5,6 中 5,6 是陣列內容 多個引數 索引都是屬性名,但只有自然數 才是索引,負數,非數字 索引 會變成陣列的屬性,陣列的屬性不會影響陣列的長度 索引沒必要連續,陣列length 最大的下標in...

新建WINDOWS服務C

當前作業環境 windows8.1 visual studio 2013 一.建立專案,選擇 windows服務 模板 二.檢視生成的專案,結構很像winform的專案,其中program.cs是程式入口,service1.cs是服務類.service1.cs,按f7從設計檢視轉到 服務類繼承自服務...

PHP陣列 新建乙個陣列(短陣列)

可以用 array 語言結構來新建乙個陣列。它接受任意數量用逗號分隔的 鍵 key 值 value 對。array key value 鍵 key 可是是乙個整數 或字串 值 value 可以是任意型別的值最後乙個陣列單元之後的逗號可以省略。通常用於單行陣列定義中,例如常用 array 1,2 而不...