随笔 - 2146  文章 - 19 评论 - 11846 阅读 - 1267万


NameValueCollection 相当于 Key 和 Value 都是字符串的且能通过索引访问的哈希表.

主要成员:
/* 属性 */
AllKeys; //返回包含所有键的 string[]
Count;   //
Keys;    //键集合

/* 方法 */
Add();       //
Clear();     //
CopyTo();    //
Get();       //根据索引或键取值, 有多个值时会用逗号隔开
GetKey();    //根据索引取键
GetValues(); //根据索引或键取值, 返回 string[]
HasKeys();   //是否包含非 null 键
Remove();    //根据键移除
Set();       //改值; 若键不存在则同 Add()


其 Key 可为 null, 且可对应多个 Value:
protected void Button1_Click(object sender, EventArgs e)
{
    NameValueCollection nv = new NameValueCollection();
    nv.Add("k1", "AAA");
    nv.Add("k2", "BBB");
    nv.Add("k3", "CCC");
    nv.Add(null, "DDD");
    nv.Add("k2", "b");
    nv.Add("k2", "bb");
    nv.Add("k2", "bbb");

    string str1 = nv["k1"]; //AAA
    string str2 = nv["k2"]; //BBB,b,bb,bbb : 多个值会用逗号分开
    string str3 = nv[1];    //BBB,b,bb,bbb
    string str4 = nv[null]; //DDD

    TextBox1.Text = str1 + "\n" + str2 + "\n" + str3 + "\n" + str4;
}   


练习:
protected void Button1_Click(object sender, EventArgs e)
{
    NameValueCollection nv = new NameValueCollection();
    nv.Add("k1", "AAA");
    nv.Add("k2", "BBB");
    nv.Add("k3", "CCC");
    nv.Add("k2", "b");
    nv.Add("k2", "bb");
    nv.Add("k2", "bbb");

    int n = nv.Count; //3 : k1、k2、k3

    nv.Set("k1", "aaa");

    string str1 = nv.Get(0);    //aaa
    string str2 = nv.Get("k1"); //aaa
    string str3 = nv.GetKey(0); //k1

    string[] sArr1 = nv.GetValues(0);
    string[] sArr2 = nv.GetValues("k2");

    string str4 = string.Join("; ", sArr1); //aaa
    string str5 = string.Join("; ", sArr2);

    TextBox1.Text = string.Format("{0}\n{1}\n{2}\n{3}\n{4}\n{5}", n, str1, str2, str3, str4, str5);
}

protected void Button2_Click(object sender, EventArgs e)
{
    NameValueCollection nv = new NameValueCollection();
    nv.Add("k1", "AAA");
    nv.Add("k2", "BBB");
    nv.Add("k3", "CCC");
    nv.Add("k2", "b");
    nv.Add("k2", "bb");
    nv.Add("k2", "bbb");

    NameValueCollection.KeysCollection keys = nv.Keys;

    string str1 = "";
    foreach (string s in keys) { str1 += s + ", "; } //k1, k2, k3, 

    string str2 = string.Join("; ", nv.AllKeys);     //k1; k2; k3 

    TextBox1.Text = str1 + "\n" + str2;
}

posted on   万一  阅读(2507)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
历史上的今天:
2010-01-07 如何用 GDI+ 高质量地缩放图片 - 回复 "程序牛" 的问题
2010-01-07 RegularExpressions(5) RegularExpressions 成员(二) IRegex
2010-01-07 RegularExpressions(4) RegularExpressions 成员(一)
2010-01-07 RegularExpressions(3) RegularExpressions 的工作思路
2009-01-07 Delphi 与 DirectX 之 DelphiX(1): 安装测试
2009-01-07 求助! 谁有 《inside delphiX》这本书?
2009-01-07 模拟点击网页中的按钮 - 回复 "starcraft_ly" 的问题


点击右上角即可分享
微信分享提示