Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C语言表示类型化N元组# List L=新列表; L.添加({“hi”,“mom”,5.0});_C#_.net_Generics_Coding Style - Fatal编程技术网

C# 用C语言表示类型化N元组# List L=新列表; L.添加({“hi”,“mom”,5.0});

C# 用C语言表示类型化N元组# List L=新列表; L.添加({“hi”,“mom”,5.0});,c#,.net,generics,coding-style,C#,.net,Generics,Coding Style,在C#中获得此功能的最佳方式是什么?我想动态定义一个强类型元组(用于本地函数),将它们保存在一个列表中,进行一些处理并返回一个结果,再也不要接触列表 实际上,我并不关心强类型,但是变量列表不起作用。我想要一个对象列表吗?那是我能找到的最近的吗 为临时数据结构定义结构或类对我来说似乎冗长而迂腐。如果您使用的是C#4.0,您可以使用类型您看过.NET 4.0中引入的类了吗 另一个选项是使用。您也可以将其作为元组的替代品 anon类型数组初始化和循环结果的示例: List<struct {str

在C#中获得此功能的最佳方式是什么?我想动态定义一个强类型元组(用于本地函数),将它们保存在一个列表中,进行一些处理并返回一个结果,再也不要接触列表

实际上,我并不关心强类型,但是变量列表不起作用。我想要一个对象列表吗?那是我能找到的最近的吗

为临时数据结构定义结构或类对我来说似乎冗长而迂腐。

如果您使用的是C#4.0,您可以使用类型

您看过.NET 4.0中引入的类了吗


另一个选项是使用。

您也可以将其作为元组的替代品

anon类型数组初始化和循环结果的示例:

List<struct {string, string, double} > L = new List<struct {string, string, double}>;
L.Add({"hi", "mom", 5.0});

在C#中表示这一点的最佳方法是使用
元组
类型

var anons = new [] { new {num=1, str="str1"},
                     new {num=2, str="str2"} };

foreach(var v in anons) Console.WriteLine(v.num + " " + v.str);
var l=新列表();
l、 添加(Tuple.Create(“hi”,“mom”,42.0));
元组没有明确的语言支持,但正如您所看到的,API并不太冗长

是最容易的;这实际上是一个数组,但列表也很简单——如果您觉得懒惰,可能是
.ToList()

就个人而言,在这种情况下,我会使用anon类型:

var arr = new[] { Tuple.Create("hi","mom", 5.0) };
非常相似,只是成员名称更有意义。

List L=new List();
var arr = new[] { new { Text = "hi", Name = "mom", Value = 5.0 } };
L.Add(Tuple.Create(“hi”,“mom”,5.0));

关于这个类的更多信息。

我能想到的最简单的方法是使用元组:

List<Tuple<string, string, double>> L = new List<Tuple<string, string, double>>();
L.Add(Tuple.Create("hi", "mom", 5.0));
var L=新列表();
L.Add(Tuple.Create(“a”、“b”、10D));

或者,您也可以使用动态列表

过多的Lua编程可能已经毁了我。请注意,它是不可变的,并且也会给您一个稍微奇怪的外观。Item1,.Item2 etc属性来访问每个元组组件值。我个人也喜欢这里的匿名类型。问题是当
T
是匿名类型时,很难声明
List
。如果只在单个方法的上下文中使用它,则不需要指定
T
。您可以使用
var
推断、linq
.ToList()
和匿名类的组合来管理它。@Gabe:我知道OP提到了一个列表,但我不知道列表是必要的。请参阅我添加到答案中的代码片段。
ExpandoObject
可能只是要使用的动态类型。您还可以编写一个扩展方法,使其不那么冗长。然后你可以做像l.Add(1,2,3)这样的事情;
List<Tuple<string, string, double>> L = new List<Tuple<string, string, double>>();
L.Add(Tuple.Create("hi", "mom", 5.0));
        var L = new List<Tuple<string, string, double>>();

        L.Add(Tuple.Create("a", "b", 10D));