List<struct {string, string, double} > L = new List<struct {string, string, double}>;
L.Add({"hi", "mom", 5.0});
在C#中获取此功能的最佳方式是什么?我想动态定义一个强类型元组(用于本地函数),将一堆它们保存在列表中,进行一些处理并返回结果,再也不要再触摸列表。
我实际上并不关心强类型,但是vars列表不起作用。我想要一个对象列表吗?这是我能得到的最接近的吗?
为临时数据结构定义结构或类似乎对我来说是冗长和迂腐。
答案 0 :(得分:7)
在C#中表示此问题的最佳方法是使用Tuple
类型
var l = new List<Tuple<string, string, double>>();
l.Add(Tuple.Create("hi", "mom", 42.0));
对元组没有明确的语言支持,但正如您所看到的那样,API
答案 1 :(得分:6)
var arr = new[] { Tuple.Create("hi","mom", 5.0) };
是最简单的;这实际上是一个数组,但列表也很容易 - 如果你感到懒惰,也许.ToList()
。
就个人而言,在这种情况下我会使用anon-type:
var arr = new[] { new { Text = "hi", Name = "mom", Value = 5.0 } };
非常相似,只是会员名称更有意义。
答案 2 :(得分:2)
您还可以查看using anonymous types作为元组的替代方法。
anon类型数组的初始化示例并循环结果:
var anons = new [] { new {num=1, str="str1"},
new {num=2, str="str2"} };
foreach(var v in anons) Console.WriteLine(v.num + " " + v.str);
答案 3 :(得分:2)
List<Tuple<string, string, double>> L = new List<Tuple<string, string, double>>();
L.Add(Tuple.Create("hi", "mom", 5.0));
有关Tuple课程的详情。
答案 4 :(得分:1)
如果您使用的是C#4.0,则可以使用Tuple类型
答案 5 :(得分:1)
你看过.NET 4.0中引入的Tuple
类吗?
另一种选择是使用anonymous types。
答案 6 :(得分:1)
我能想到的最简单的方法是使用元组:
var L = new List<Tuple<string, string, double>>();
L.Add(Tuple.Create("a", "b", 10D));
或者您也可以使用动态列表