C#类型铸造或转换
问题描述:
public class ExpiringDictionary<TKey, TValue> : IDictionary<TKey, TValue> {
private class ExpiringValueHolder<T>
{
public T Value { get; set; }
.
.
.
}
private IDictionary<TKey, ExpiringValueHolder<TValue>> innerDictionary;
public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()
{
//throw new NotImplementedException();
return (IEnumerator<KeyValuePair<TKey, TValue>>)innerDictionary.GetEnumerator();
}
}
这里是代码给我铸造错误。有可能为函数GetEnumerator()转换返回值吗?C#类型铸造或转换
谢谢你的帮助。
答
您的innerDictionary
包含一个KeyValuePair<TKey, ExpiringValueholder<TValue>>
的集合,所以不是您可以尝试的方式。
最简单的解决方案可能是做到以下几点:
return innerDictionary.Select(kvp => new KeyValuePair<TKey, TValue>(kvp.Key, kvp.Value.Value))
.GetEnumerator()
这将从ExpiringValueHolder<T>
选择内Value
。
这很酷。感谢您的快速响应和简单的解决方案.. – AstronBnX 2013-02-18 11:07:20