C 的一些謹慎點!

2021-06-20 12:50:12 字數 3223 閱讀 8736

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...