c# – 如何比较两个有序字典之间的元素值
发布时间:2020-12-15 23:26:43 所属栏目:百科 来源:网络整理
导读:我试图比较两个有序字典的元素中的值.我无法找到正确的编码来获取索引0处的元素并将它们转换为DictionaryEntrys.我想使用以下代码: DictionaryEntry card1 = (DictionaryEntry)(player1.Hand[0]); DictionaryEntry card2 = (DictionaryEntry)(player2.Hand[
我试图比较两个有序字典的元素中的值.我无法找到正确的编码来获取索引0处的元素并将它们转换为DictionaryEntrys.我想使用以下代码:
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 } 从您的评论中,听起来您也希望能够修改密钥. 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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |