最近在研究HttpRequest類,發現里面的很多屬性都返回一個NameValueCollection對象,今天再來了解一下這個神秘的對象。
隨便寫了個例子,發現跟HashTable類似。但是這個東西有點怪,就是當存在一個key的時候,你在add的話,會追加進當前key中。而不是簡單替換。
NameValueCollection nvc = new NameValueCollection(); nvc.Add("第一個", "劉德華"); nvc.Add("第二個", "張學友"); nvc.Add("第三個", "郭富城"); nvc.Add("第四個", "黎明"); foreach (string str in nvc) { Response.Write(str + ":" + nvc[str] + "; "); }
瀏覽器輸出:
下面通過MSDN來詳細了解下這個類。
一、共有屬性
AllKeys 該屬性可以獲取NameValueCollection 中的所有鍵。返回一個字符串數組。
Count 該屬性獲取NameValueCollection包含鍵值對的數目,返回一個int。
Item 該屬性表明NameValueCollection可以通過索引訪問,如nvc[1],nvc["key"].
Keys 該屬性獲取 NameObjectCollectionBase.KeysCollection 實例,該實例包含 NameObjectCollectionBase 實例中的所有鍵。
二、受保護屬性
IsReadOnly 獲取或設置一個值,通過該值指示 NameObjectCollectionBase 實例是否為只讀的。
三、方法
Add 將項添加到當前 NameValueCollection。例如:一個參數是將一個NameValueCollection復制到當前NameValueCollection,兩個就是一個鍵值對。
Clear 使緩存數組無效,並清空NameValueCollection。
CopyTo 從目標數組的指定索引處開始將整個 NameValueCollection 復制到兼容的一維 Array。
Get 獲取 NameValueCollection 中指定項的值,可以通過key或索引號訪問。
GetEnumerator 返回循環訪問 NameObjectCollectionBase 的枚舉數。
GetKey 獲取 NameValueCollection 的指定索引處的鍵。
GetValues 獲取 NameValueCollection 中指定項的值。返回一個字符串數組,為什么要返回一個數組呢?因為一個值里面可能會包括多個項。
HasKeys 獲取一個值,該值指示 NameValueCollection 是否包含非空引用的鍵。即有鍵值對且鍵不為null就返回true,否則返回false。可用於判斷對象是否為空。
Remove 移除 NameObjectCollectionBase 實例中具有指定鍵的項。只能夠根據鍵key移除項,不能用索引移除。
Set 根據鍵值對重新設置一個項目。Set("第一個","劉德華");
OnDeserialization 實現 ISerializable 接口,並在完成反序列化之后引發反序列化事件。