ConcurrentDictionary<(enum a, enum b), T>?

ConcurrentDictionary<(enum a, enum b), T>?

some api dode 中找到了这个。 VS 2015 不接受将两个枚举作为键,我以前从未见过这样的声明。我假设它对谁写的有用,那么我应该学什么..?

private readonly ConcurrentDictionary<(Pair c, ChannelType o), ClientWebSocket> _wsClients;

Pair 和 ChannelType 是枚举。

这是 C# 7.0 中引入的 值元组 的语法糖。在这种情况下,它将两个值合并为一个值。阅读有关值元组的更多信息 in this introduction.

之所以可以用在字典的键中,是因为值是相等的,如果元组中的每个值都匹配另一个,则认为是相同的。

有关值元组与基于 class 的元组的更多信息,请参阅