ConcurrentDictionary‹(перечисление a, перечисление b), T›?

Нашел это в каком-то API. В VS 2015 не принято иметь два перечисления в качестве ключа, и я никогда раньше не видел такого объявления. Я предполагаю, что это сработало для тех, кто это написал, так что я должен узнать ..?

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

Pair и ChannelType являются перечислениями.


person bretddog    schedule 25.10.2017    source источник


Ответы (1)


Это синтаксический сахар для кортежей значений, представленный в C# 7.0. В этом случае он объединяет два значения в одно значение. Подробнее о кортежах значений в этом введении.

Причина, по которой его можно использовать в ключе словаря, заключается в том, что значение приравнивается, если каждое значение в кортеже соответствует другому, оно будет считаться одинаковым.

Дополнительные сведения о кортежах значений и кортежах на основе классов см. в разделе . разница между System.ValueTuple и System.Tuple?

person Bas    schedule 25.10.2017