1.集合介面與集合型別
(1)集合的命名空間
大多數集合類都可以在system.collections和system.collections.generic命名空間中找到。泛型集合位於system.collections.generic命名空間中;專用於特定型別的集合類位於system.collections.specialized命名空間中;執行緒安全的集合位於system.collections.concurrent命名空間中。
(2)集合介面介紹
1、ienumerable與ienumerator介面
其實ienumerable介面是非常的簡單,只包含乙個抽象的方法getenumerator(),它返回乙個可用於迴圈訪問集合的ienumerator物件。
public inte***ce ienumerable
ienumerator getenumerator();
ienumerator物件有什麼呢?它是乙個真正的集合訪問器,沒有它,就不能使用foreach語句遍歷集合或陣列,因為只有ienumerator物件才能訪問集合中的項。ienumerator介面定義了:乙個current屬性用來獲取當前集合中的項;movenext方法將游標的內部位置向前移動;reset方法將列舉數設定為其初始位置,該位置位於集合中第乙個元素之前。
public inte***ce ienumerator
object current
bool movenext();
void reset();
乙個collection要支援foreach進行遍歷,就必須實現ienumerable,並以某種方式返回迭代器物件:ienumerator.
2、集合和列表實現的介面表
介面說明
ienumerable
如果foreach語句用於集合,就需要此介面。
icollection
此集合定義了count屬性、copyto、add、remove、clear方法
ilist
可以通過位置訪問幾何元素
iset
此集合不允許有重複的元素
idictionary
含有鍵值對的集合
ilookup
含有鍵值對的集合,但可以通過乙個鍵包含多個值
icomparer
集合元素比較器,用於集合元素的排序
iequalitycomparer
用於字典集合的比較器
iproducerconsumercollection
執行緒安全的集合
2.集合的基本操作
(1)建立集合
使用預設的建構函式建立乙個空集合,元素新增到集合之後,集合的容量就會擴大為4.當集合的容量被使用完,且還在向集合中新增元素時,集合的容量就會擴大成原來的2倍!可使用capacity屬性設定或訪問集合的容量,使用count屬性訪問集合的元素個數。也可使用trimexcess方法調整集合容量,節省記憶體!
class program
static void main(string args)
list list = new list();//list list = new list(3)
for (int i = 0; i < 1025; i++)
if (list.count == (list.capacity))
console.writeline("容量使用量:"+list.count + "/" + list.capacity);
list.add(i);
console.writeline("容量使用量:" + list.count + "/" + list.capacity);
list.trimexcess();//調整容量
console.writeline("容量使用量:" + list.count + "/" + list.capacity);
console.read();
建立集合時可以為集合設定初始值,如下:
list list = new list() ;
list list = new list() ;
(2)新增元素
為集合新增元素可使用add方法,還可以使用addrange方法一次新增多個元素,因為addrange方法的引數是ienumerable型別的物件,所以可以新增陣列到集合裡。
class program
static void main(string args)
list list = new list();
list.addrange(new string);//新增陣列
list.addrange(list);//新增集合
foreach (string s in list)
console.writeline(s);
console.read();
(3)插入元素
插入元素可以使用insert方法,同樣使用insertrange方法插入多個元素,與addrange方法類似。
class program
static void main(string args)
list list = new list() ;
list.insert(2, "cc");//插入元素
list.insertrange(3, new string );//插入集合
foreach (string s in list)
console.writeline(s);
console.read();
(4)訪問元素
可以使用索引器訪問集合中某個位置的元素,例如:
class program
static void main(string args)
list list = new list() ;
console.writeline(list[1]);//訪問第1個位置上的元素,下標從0開始
console.read();
集合的遍歷,除了使用foreach外,還可以使用集合的foreach方法,該方法的引數是乙個action委託型別,可以使用lambda表示式。例如:
class program
static void main(string args)
list list = new list() ;
list.foreach(temp => console.writeline("元素:" + temp));
//也可使用: list.foreach(console.writeline);
console.read();
C 的一些知識點
include using namespace std 內聯函式,交換兩個數的值 建議直接定義,不用先在開頭宣告再在後面定義 inline void swap int a,int b int main int p newint 分配1個int型的記憶體空間 delete p 釋放記憶體 int p ...
初學C 與C的一些區別點
1 c語言中定義了乙個結構體,在定義新成員時,必須加上關鍵字struct,除非用 typedef 重新定義 但 c 可以省略 struct關鍵字 2.c 語言中 函式不能是結構體的成員 struct c語言中 非法!但 c 中 合法可以定義 3 c語言中,可以實現結構體成員呼叫函式 struct v...
c 使用中的一些注意點
1.在c 中,建構函式在預設引數,一般是要放在最後面的。2.如果想通過傳乙個指標得到函式的返回值,則應該用指標的指標 3.c 中,主線程退出了,子執行緒也就退出了。一般是,主線程要迴圈。c 一些開發原則 1.如果函式要傳引用 的話,一般是這樣 const std string msg 要加const...