我正在尝试比较两个有序字典的元素中的值。我无法找到正确的编码来获取索引 0 处的元素并将它们转换为 DictionaryEntry。我正在尝试使用以下代码:
DictionaryEntry card1 = (DictionaryEntry)(player1.Hand[0]);
DictionaryEntry card2 = (DictionaryEntry)(player2.Hand[0]);
if ((int)card1.Value > (int)card2.Value)
{
// do stuff
}
代码通过了 intellisense,但因无效转换而爆炸。我也会码字
var card1 = player1.Hand[0];
但它不允许我检索 card1.Value。据我所知,card1 需要转换为 DictionaryEntry,但我不知道该怎么做。
任何帮助将不胜感激。谢谢。
最佳答案
OrderedDictionary
中的索引器实现如下:
public object this[int index]
{
get { return ((DictionaryEntry)objectsArray[index]).Value; }
set { ... }
}
它返回值,而不是键/值对。这就是为什么不能将其转换为 DictionaryEntry
的原因。
改为这样进行比较,将索引器的返回值直接转换为 int
:
if ((int)player1.Hand[0] > (int)player2.Hand[0])
{
// do stuff
}
从您的评论来看,您似乎也希望能够修改 key 。
AFAIK,您必须使用键或索引来获取值,然后删除旧元素并添加/插入新元素:
var value = (int)player1.Hand[0];
player1.Hand.RemoveAt(0);
player1.Hand.Add("someNewKey", value);
var value = (int)player1.Hand["oldKey"];
player1.Hand.Remove("oldKey");
player1.Hand.Add("someNewKey", value);
关于c# - 如何比较两个有序字典之间的元素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31487203/