用内联定义<t>初始化List <t>

时间:2019-02-22 12:15:24

标签: c#

您总是可以这样定义一个类:

public class item {
  int id;
  string name;
}

然后像这样使用它:

List<item> items = new List<item>();

我们不能做这样的事情吗?

var items = new List<{int id, string name}>();

当基础对象定义简单且可预测时,这只是初始化的一种简短方法。

这在JavaScript中是可能的(我已经在Angular中看到了示例)。

很抱歉,如果以前已经回答过,我的快速搜索无法在Google或SO上找到针对该特定主题的答案。

3 个答案:

答案 0 :(得分:11)

C#7引入了How to make an AJAX call without jQuery?,因此您可以这样做:

function loadImages(images) {
    var src = document.getElementById("image-container");
    images.foreach(function(imageUrl) {
        var img = document.createElement("img");
        img.src = "image.png";
        src.appendChild(img);
    });
}

在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) { } 类型,但有点混乱:

Tuple

答案 1 :(得分:7)

在c#7.0及更高版本中,您可以使用值元组-语法几乎相同:

Activity.toString()

答案 2 :(得分:7)

您也可以这样:

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;
}

参考:Anonymous TypesImplicitly Typed ArraysToList Extension Method