gpt4 book ai didi

c# - 字典中的循环

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

我用这个:

foreach(KeyValuePair<String,String> entry in MyDic)
{
// do something with entry.Value or entry.Key

}

问题是我无法更改 entry.Value 或 entry.Key 的值

我的问题是,在遍历字典时如何更改值或键?而且,字典是否允许重复键?如果是,我们如何避免?谢谢

最佳答案

在遍历字典中的项目时,您不能更改字典条目的值,但如果它是引用类型的实例,您可以修改该值的属性。

例如,

public class MyClass 
{
public int SomeNumber { get; set;}
}

foreach(KeyValuePair<string, MyClass> entry in myDict)
{
entry.Value.SomeNumber = 3; // is okay
myDict[entry.Key] = new MyClass(); // is not okay
}

在遍历其元素时尝试修改字典(或任何集合)将导致 InvalidOperationException说集合被修改了。

回答您的具体问题,

My question is that how can i change the value or key when looping through a dictionary?

两者的方法几乎相同。您可以像 Anthony Pengram 在 his answer 中所说的那样遍历字典的副本。 ,或者您可以循环遍历所有项目以找出需要修改的项目,然后再次循环遍历这些项目的列表:

List<string> keysToChange = new List<string>();
foreach(KeyValuePair<string, string> entry in myDict)
{
if(...) // some check to see if it's an item you want to act on
{
keysToChange.Add(entry.Key);
}
}

foreach(string key in keysToChange)
{
myDict[key] = "new value";

// or "rename" a key
myDict["new key"] = myDict[key];
myDict.Remove(key);
}

And, does dictionary allow duplicated key? And if yes, how can we avoid ?

字典不允许重复键。如果你想要 <string, string> 的集合对,查看 NameValueCollection .

关于c# - 字典中的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6515400/

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