通用 类 来存储值
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),但您可以使用它们通过 Item1
、Item2
等访问您的项目
然后你像这样使用它们:
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));
在项目中,我经常使用 "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),但您可以使用它们通过 Item1
、Item2
等访问您的项目
然后你像这样使用它们:
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));