给定两个字符串,比如 hashKey 和 hashVal,我将这对添加到一个哈希对象中。在此示例中,hashVal 是一个表示整数的字符串,因此我在将其存储到表中之前对其进行解析。
现在问题来了。存储在哈希表中的值实际上是一个 int32 对象,这使得后面在内部表达式中使用起来很麻烦。经过长时间的寻找,我一直无法找到一种简单的方法来存储实际的 int 或提取存储为 int 而不是 int32 对象的值。
下面是我正在尝试做的一个例子:
var myHash : HashObject;
var intTemp : int;
var hashKey : String;
var hashVal : String;
hashKey = "foobar";
hashVal = "123";
if(System.Int32.TryParse(hashVal,intTemp))
{
intTemp = int.Parse(hashVal);
myHash.Add(hashKey,hashVal);
}
// later, attempt to retrieve and use the value:
var someMath : int;
someMath = 456 + myHash["foobar"];
这会产生编译时错误:
BCE0051:运算符“+”不能与“int”类型的左侧和“Object”类型的右侧一起使用。
如果我尝试转换对象,则会收到运行时错误:
InvalidCastException:无法从源类型转换为目标类型。
我知道我可以先将检索到的值存储在一个新的 int 中,然后再使用它,但这对于我将使用的数学数量和键值对的数量来说将是一个非常冗长且不优雅的解决方案,因此主要否定首先使用哈希表的好处。
有任何想法吗?