Есть ли версия класса Tuple, свойства Items которого не являются readonly и могут быть установлены?
Я хочу знать, есть ли встроенная версия класса Tuple
, свойствами которого не являются readonly
и могут быть установлены.
Или может кто-нибудь предоставить мне такую версию?
Я ищу решение, которое реализует базовые функции класса Tuple, (Equals
, GetHashCode
)
Ответы
Ответ 1
Нет, как упоминалось, Tuple<>
означает неизменное.
Я использую собственный класс Pair
, если мне нужен изменяемый тип, который делает то же самое, хотя в духе охвата концепций функций я стараюсь не использовать его.
namespace StackOverflow.Helpers
{
public class Pair<T1, T2>
{
public T1 First { get; set; }
public T2 Second { get; set; }
}
}
Ответ 2
Так как GetHashCode
должен возвращать тот же хэш-код для экземпляров, которые равны и должны быть неизменными после построения, любая реализация Tuple общего назначения, которая переопределяет Equals и GetHashCode, обязательно будет иметь свойства readonly для обернутых элементов.
Поэтому вы вряд ли найдете то, что ищете. Мне непонятно, почему вы хотите, чтобы и изменчивость, и Equals/GetHashCode переопределялись, но если вы это сделаете и понимаете риски, вам, вероятно, придется катиться самостоятельно.