你总是可以定义一个这样的类:
public class item {
int id;
string name;
}
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它:
List<item> items = new List<item>();
Run Code Online (Sandbox Code Playgroud)
我们不能做这样的事情:
var items = new List<{int id, string name}>();
Run Code Online (Sandbox Code Playgroud)
只是在底层对象定义简单且可预测时初始化的一种简短方法.
这在JavaScript中是可能的(我已经看过Angular中的例子).
很抱歉,如果之前得到了解答,我的快速搜索无法在Google或SO上找到此特定主题的答案.
can*_*on7 11
C#7引入了元组,所以你可以这样做:
var list = new List<(int id, string name)>();
list.Add((3, "Bob"));
var (id, name) = list[0];
var entry = list[0];
string s = $"{entry.name} has ID {entry.id}";
foreach (var (id, name) in list)
{
}
Run Code Online (Sandbox Code Playgroud)
在C#7之前,您可以使用旧Tuple类型,这有点混乱:
var list = new List<Tuple<int, string>>();
list.Add(Tuple.Create(3, "Bob"));
foreach (var item in list)
{
int id = item.Item1;
string name = item.Item2;
}
Run Code Online (Sandbox Code Playgroud)
在c#7.0及更高版本中,您可以使用值元组 - 语法几乎相同:
var items = new List<(int id, string name)>();
Run Code Online (Sandbox Code Playgroud)
你也可以这样做:
var list = new[] { new { Id = 1, Name = "name" } }.ToList();
list.Add(new { Id = 2, Name = "name2" });
foreach (var item in list)
{
int id = item.Id;
string name = item.Name;
}
Run Code Online (Sandbox Code Playgroud)
参考:匿名类型,隐式类型数组,ToList扩展方法