字典的元组相等

时间:2014-10-10 16:43:26

标签: c#

我需要一个复合键(两个字符串)作为字典的查找值。我以为我可以使用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);
}

1 个答案:

答案 0 :(得分:2)

你不需要做任何事情。 Tuple覆盖object的默认相等语义,而是创建它所代表的所有对象的哈希的复合哈希,并且其Equals方法比较每个组合项的相等性。由于字符串也会根据字符串相等的语义覆盖相等性,因此您的代码将按原样运行。