Bad*_*ral 1 c# dictionary class
我有一个字典,它接受一个元组函数和一个int
Dictionary<Tuple<string,string>, int> fullNames = new Dictionary<Tuple<string,string>, int>();
Run Code Online (Sandbox Code Playgroud)
将Tuple类定义为
public class Tuple<T, T2>
{
public Tuple(T first, T2 second)
{
First = first;
Second = second;
}
public T First { get; set; }
public T2 Second { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想这样使用Containskey函数
if (fullNames.ContainsKey(Tuple<"firstname","lastname">))
Run Code Online (Sandbox Code Playgroud)
但我收到过载错误.有什么建议?
您提供的代码无效,因为您尝试在实际对象所在的位置提供类型定义(并且类型定义也是无效的,因为字符串实际上不是System.String
泛型期望的类型).如果元组是字典的键值,那么您可以这样做:
if(fullNames.ContainsKey(new Tuple<string, string>("firstname", "lastname")))
Run Code Online (Sandbox Code Playgroud)
但是,由于在具有相同属性的内存中创建的两个元组不一定是同一个对象,因此您可能会遇到引用相等问题.这样做会更好:
Tuple<string, string> testTuple = new Tuple<string, string>("firstname", "lastname");
if(fullNames.Keys.Any(x => x.First == testTuple.First && x.Second == testTuple.Second))
Run Code Online (Sandbox Code Playgroud)
这将告诉您是否存在共享相同属性数据的密钥.然后访问该元素将同样复杂.
编辑:简而言之,如果您打算使用引用类型作为键,您需要确保您的对象实现Equals
并GetHashCode
以正确的方式识别两个独立的内存实例是相同的.
归档时间: |
|
查看次数: |
4607 次 |
最近记录: |