通用 类 来存储值

Universal classes to store values

在项目中,我经常使用 "containers" 来存储具有不同类型的不同数量的值。 例如对于 2 和 3 值:

class Nodes2<K, V> {
        public K Key { get; set; }
        public V Value { get; set; }
    }
class Nodes3<T1, T2, T3> {
        public T1 Value1 { get; set; }
        public T2 Value2 { get; set; }
        public T3 Value3 { get; set; }
    }

然后我在collections中使用它们:

List<Nodes3<int, string, double>> descriptions = new List<Nodes3<int, string, double>>();

当没有必要为每个这样的案例创建个人 class 时,这很好地适用于简单的案例。

所以,问题是:.NET built-in classes 中是否可以像我这样保存值?

是的,有。对于键值,您有 Dictionary<K,V>.

对于节点持有者,您有 Tuple(最多 8 个元素)。虽然有点麻烦 (IMO),但您可以使用它们通过 Item1Item2 等访问您的项目

然后你像这样使用它们:

var tuple = Tuple.Create("Hello", 0);
var hello = tuple.Item1;
var zero = tuple.Item2;

是的,Tuple,它的实现带有额外的通用类型参数。 (Tuple<T>Tuple<T1, T2> 等)。 Tuple 可从 .NET 4 获得。

来自MSDN

var tuple1 = Tuple.Create(12);
Console.WriteLine(tuple1.Item1)

并且:

var tuple2 = Tuple.Create("New York", 32.68);
Console.WriteLine("{0}: {1}", tuple2.Item1, tuple2.Item2);

以此类推

已经有一个 class 为此 Tuple

List<Tuple<int, string, double>> lists = new List<Tuple<int, string, double>>();
lists.Add(Tuple.Create<int, string, double>(5, "string", 10d));