Dre*_*teh 2 c# generics collections dictionary
我正在构建以下类来管理字典.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到一个错误"运算符'=='不能应用于'TValue'和'TValue'类型的操作数".
顺便说一句,我正在制作这个自定义集合是因为我的字典具有独特的价值,但我无法从字典中获取密钥.
任何帮助表示赞赏.谢谢.
你尝试过使用这种Equals方法吗?
if (kvp.Value.Equals(value))
Run Code Online (Sandbox Code Playgroud)
我认为这种限制是由于==操作员不能与所有类型一起使用.举个例子:
struct Test
{
public int Value;
}
Run Code Online (Sandbox Code Playgroud)
鉴于上述结构,以下代码将无法编译:
Test a, b;
a = b = new Test();
bool areEqual = a == b; // Operator '==' cannot be applied to
// operands of type 'Test' and 'Test'
Run Code Online (Sandbox Code Playgroud)
但是,所有类型都有Equals方法,所以调用它将起作用:
Test a, b;
a = b = new Test();
bool areEqual = a.Equals(b);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
584 次 |
| 最近记录: |