Будучи типом значения, хэш для ValueTuple
следует реализации по умолчанию, которая основана на значениях членов:
Если типы значений не переопределяют GetHashCode, ValueType.GetHashCodeМетод базового класса использует отражение для вычисления хеш-кода на основе значений полей типа.Другими словами, типы значений, поля которых имеют равные значения, имеют одинаковые хеш-коды.
Кортежи являются изменяемыми, но поскольку они копируются по значению , их можно безопасно использовать в качестве словаря.ключи.Проблема может заключаться в том, что если вы используете переменную типа кортежа, используйте эту переменную в Dictionary.Add
, затем измените эту переменную и попытаетесь получить доступ к связанному значению из словаря, используя ту же переменную, что и ключ.В этом случае вы не найдете его в словаре.
Эквивалентная структура будет выглядеть следующим образом:
MyStruct : struct
{
public int A;
public int B;
}