下面的方法在字典中查找特定的键,如果可以的话,会尝试安全地存储它destination
。我遇到的问题是何时T=Int64
和字典中的项目是Int32
或UInt32
(两者都可以放入 Int64 而不会丢失数据)。 valueAsObject is T
当 T 为 Int64 且 valueAsObject 为 Int32 时返回 false。
是否可以安全地将 valueAsObject 转换为 T 而无需尝试并捕获任何异常?我想避免例外,但如果这是我让它工作的唯一方法。
public static void MyMethod<T>(IDictionary<String, Object> dictionary, String key, ref T destination)
{
if (!dictionary.ContainsKey(key))
return;
var valueAsObject = dictionary[key];
if (!(valueAsObject is T))
return;
destination = (T)valueAsObject;
}
基本上,如果在字典中找到的东西不能安全地存储在类型 T 变量中(没有数据丢失),我希望函数什么都不做(返回),否则它应该根据需要进行转换并存储它。