gpt4 book ai didi

c# - 没有值的 NameValueCollection 键

转载 作者:行者123 更新时间:2023-11-30 15:56:29 26 4
gpt4 key购买 nike

我有一个 NameValueCollection 变量 queryDict

有些键没有值。但是我想遍历所有键,即使它们没有关联的值。

使用这个,如果值为空,我得到 null 而不是键名:

foreach (var parameter in queryDict)
{
key = (string)parameter;
}

AllKeys 产生所有结果。

但是我也得到了 null。查看 queryDict 的内容,我可以通过字符串看到值在那里...

那么如何在不需要创建算法的情况下访问所有键名?

添加:

鼠标悬停时queryDict的内容如下:

{AQB=1&ndh=1&cid.&oxygenid}

CID。循环中没有发现 oxygenid

我是这样填的:

string queryString = "AQB=1&ndh=1&cid.&oxygenid";
NameValueCollection queryDict = System.Web.HttpUtility.ParseQueryString(queryString);

最佳答案

NameValueCollection 允许您使用相同的键添加多个值,但是如果您添加一个具有空值的键,然后再次读取具有非空值的相同键,则第一个值(空值)是没有更多可用的

让我们测试一些场景:

NameValueCollection coll = new NameValueCollection();
coll.Add("This", "Test");
coll.Add("That", "A value");
coll.Add("This", "Not a null");

foreach (string p in coll.AllKeys)
{
Console.WriteLine("Key=" + p + ", Value=[" + (coll[p] ?? "null") + "]");
}

我们得到,作为输出,

Key=This, Value=[Test,Not a null]
Key=That, Value=[A value]

因此该对象已将两个添加的值合并到一个条目中,用逗号分隔两个值。现在让我们试试

coll.Add("This", null);
coll.Add("That", "A value");
coll.Add("This", "Not a null");

输出是

Key=This, Value=[Not a null]
Key=That, Value=[A value]

没有第一次添加的痕迹。为什么会这样?很简单,因为合并值的Add方法的内部逻辑无法区分null的初始值和第一次add添加的null。所以它只是将空值替换为“非空”字符串。

确实在评论最后添加

coll.Add("This", null);
coll.Add("That", "A value");
// coll.Add("This", "Not a null");

我们得到

Key=This, Value=[null]
Key=That, Value=[A value]

关于c# - 没有值的 NameValueCollection 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46716416/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com