我正在构建以下类来管理字典。
public class EnumDictionary<TKey, TValue>
{
private Dictionary<TKey, TValue> _Dict;
public EnumDictionary(Dictionary<TKey, TValue> Dict)
{
this._Dict = Dict;
}
public TKey GetValue(TValue value)
{
foreach (KeyValuePair<TKey, TValue> kvp in _Dict)
{
if (kvp.Value == value)
return kvp.Key;
}
throw new Exception("Undefined data type: " + value);
}
}
但我收到错误消息“运算符‘==’无法应用于‘TValue’和‘TValue’类型的操作数”。
顺便说一句,我制作这个自定义集合是因为我的字典具有唯一值,但我无法从字典中按值获取键值。
感谢任何帮助。谢谢。
最佳答案
您是否尝试过使用 Equals
方法?
if (kvp.Value.Equals(value))
我认为此限制是由于 ==
运算符不能用于所有类型。以下面的例子:
struct Test
{
public int Value;
}
鉴于上述结构,以下代码将无法编译:
Test a, b;
a = b = new Test();
bool areEqual = a == b; // Operator '==' cannot be applied to
// operands of type 'Test' and 'Test'
但是,所有类型都有 Equals
方法,因此调用它会起作用:
Test a, b;
a = b = new Test();
bool areEqual = a.Equals(b);
关于c# - 构建通用集合类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3656303/