我正在实现ListDictionary。我想从该对象中快速获取特定项目,而不必遍历整个过程。
示例:
ListDictionary myCol = new ListDictionary();
myCol.Add("totalCount", 5);
myCol.Add("filteredCount", 2);
myCol.Add("data", data); // Value of data here isn't relevant
现在,我想做的就是获取“ totalCount”的值并按如下方式使用它:
int newCount = myCol["totalCount"] + 5;
但这不会编译为错误“运算符+不能应用于类型为'object'和'int'的操作数。如果我尝试将其强制转换为int,则会出现异常:“未设置对象引用到对象的实例。”
如何获取该密钥的实际值?
答案 0 :(得分:1)
您的问题可能是因为ListDictionary
的{{3}}的类型为object
。这意味着您的值被装箱和拆箱。这意味着您将需要转换为适当的类型。尝试以下方法:
int newCount = (int?) myCol["totalCount"] + 5 ?? 5;
这将尝试将mycol["totalCount"]
转换为一个整型,但是如果为空,它将仅将5分配给newCount
答案 1 :(得分:0)
Keys
和Values
是ListDictionary
中对象的类型。
您需要将对象转换为int
类型。
int newCount = Convert.ToInt32( myCol["totalCount"]) + 5;
注意-为避免不必要的转换,请考虑使用通用的Dictionary
。