gpt4 book ai didi

c# - 在可序列化字典上使用 foreach 语句

转载 作者:行者123 更新时间:2023-11-30 22:33:25 26 4
gpt4 key购买 nike

我有一个为 WCF REST Web 服务创建的可序列化字典

[Serializable]
public class jsonDictionary<TKey, TValue> : ISerializable
{
private Dictionary<TKey, TValue> _Dictionary;
public jsonDictionary()
{
_Dictionary = new Dictionary<TKey, TValue>();
}
public jsonDictionary(SerializationInfo info, StreamingContext context)
{
_Dictionary = new Dictionary<TKey, TValue>();
}
public TValue this[TKey key]
{
get { return _Dictionary[key]; }
set { _Dictionary[key] = value; }
}
public void Add(TKey key, TValue value)
{
_Dictionary.Add(key, value);
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
foreach (TKey key in _Dictionary.Keys)
info.AddValue(key.ToString(), _Dictionary[key]);
}
}

我需要搜索这本字典以确定是否存在多个可能的键中的一个。我想我会使用类似这样的 foreach 语句来做到这一点

foreach(var pair in dictionary)
{
switch(pair.key)
{
case "something":

Break;
case "somethingelse":
Break;
}
}

但是我一直收到错误:

    foreach statement cannot operate on variables of type 'ZTERest.jsonDictionary<string,string>' because 'ZTERest.jsonDictionary<string,string>' does not contain a public definition for 'GetEnumerator'

我知道我必须对 IEnumerable 或 IEnumerator 接口(interface)做一些事情,但我不确定如何做。

最佳答案

字典提供键/值查找是有原因的,它不是您通常要遍历的东西。通用 Dictionary<>您的类正在包装的对象已经有一个名为 ContainsKey() 的方法这将完全满足您的需求,而无需遍历每个键/值对以查看它是否存在的开销。无需公开迭代器,只需将其添加到您的类中即可。

public bool ContainsKey(TKey key)
{
return _Dictionary.ContainsKey(key);
}

然后这样调用它。

if (dictionary.ContainsKey("Something"))
{
//do something
}

关于c# - 在可序列化字典上使用 foreach 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8314565/

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