用于存储值的通用类

时间:2015-02-04 08:52:31

标签: c# .net

在项目中,我经常使用“容器”来存储具有不同类型的不同数量的值。 例如,对于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; }
    }

然后我在集合中使用它们:

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

适用于简单案例的套件,当没有必要为每个这样的案例创建个别类时。

所以,问题是:.NET内置类是否可以保存像我这样的值?

3 个答案:

答案 0 :(得分:2)

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

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

Tuples

你可以这样使用它们:

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

答案 1 :(得分:0)

是的,Tuple,带有额外泛型类型参数的实现。 (Tuple<T>Tuple<T1, T2>等)。 .NET 4中提供了Tuple

来自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);

等等。

答案 2 :(得分:0)

已经为此Tuple制作了一个课程。

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