是否有Tuple类的版本,其Items属性不是readonly并且可以设置?

Gia*_*971 32 .net c# tuples

我想知道是否有一个类的内置版本,Tuple其Items属性不是readonly,可以设置.

或者有人能为我提供这样的版本吗?

我正在寻找一个实现Tuple类的基本功能的解决方案,(Equals,GetHashCode)

Rit*_*ton 64

不,如上所述,a Tuple<>是不可改变的.

我使用自定义Pair类,如果我需要一个可变类型做同样的事情,虽然本着拥抱功能概念的精神,我尽量不使用它.

namespace StackOverflow.Helpers
{
    public class Pair<T1, T2>
    {
        public T1 First { get; set; }
        public T2 Second { get; set; }
    }
} 
Run Code Online (Sandbox Code Playgroud)

  • @ GianT971.我无语了. (87认同)
  • @ GianT971,你完全不能自己做那些事吗?*这并不难!*此外,你的问题没有提到需要这样的事情. (20认同)
  • @ GianT971 - 为可变类型实现`GetHashCode()`? - 冒险吧.参见例如http://stackoverflow.com/q/873654/499721 (4认同)
  • 对不起,此时您的解决方案不适合我需要的转发器,因为它缺少Tuple实现的一些功能:Equals,GetHashCode,CompareTo等. (2认同)

Joe*_*Joe 5

由于GetHashCode应返回该是平等的情况下,相同的哈希码,应该是施工后不可改变,即覆盖任何通用的元组实施的Equals和GetHashCode将不可避免地对包装物品只读属性.

因此,你不太可能找到你想要的东西.我不清楚为什么你会想要可变性和Equals/GetHashCode覆盖,但如果你这样做,并了解风险,你可能不得不自己动手.

  • @ GianT971 - 是的,这通常被认为是一件坏事.http://stackoverflow.com/questions/462451/gethashcode-guidelines-in-c-sharp http://stackoverflow.com/questions/873654/overriding-gethashcode-for-mutable-objects-c (2认同)