我需要一个复合键(两个字符串)作为字典的查找值。我以为我可以使用Tuple<string,string>
,但据我所知,字典会执行引用相等检查,而且我永远不会得到匹配。
我该怎么做才能执行实际的字符串比较?
这就是我所拥有的:
protected Dictionary<Tuple<string, string>, WopiSession> _sessions;
...
var sessionKey = new Tuple<string, string>(accessToken, fileToken);
WopiSession session;
if (!_sessions.TryGetValue(sessionKey, out session))
{
session = new WopiSession();
_sessions.Add(sessionKey, session);
}
答案 0 :(得分:2)
你不需要做任何事情。 Tuple
覆盖object
的默认相等语义,而是创建它所代表的所有对象的哈希的复合哈希,并且其Equals
方法比较每个组合项的相等性。由于字符串也会根据字符串相等的语义覆盖相等性,因此您的代码将按原样运行。