在C#中保存相同类型的有序值对的最佳类型是什么?

5 .net c# types

在C#中保存相同类型的有序值对的最佳类型是什么?

我想要那个:

  1. 在编译时强制执行两个值组合(在编译或运行时不可能尝试添加或删除).
  2. 两个值具有相同的静态类型.
  3. 可以使用索引器检索两个值(例如pair [0],pair [1]).

    更新:我改变主意,我不再真的想要#3了,因为它毫无意义地打开了超出界限的例外:

Ste*_*ack 5

您可以Tuple像这样扩展类:

public class Pair<T> : Tuple<T, T>
{
    public Pair<T>(T item1, T item2) : base(item1, item2)
    {           
    }

    public T this[int index]
    {
       get
       {
           if (index == 0)
               return Item1;
           else if (index == 1)
               return Item2;
           throw new ArgumentOutOfRangeException("index");
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:添加构造函数.