在列表中创建默认项并返回新项

时间:2015-10-03 18:36:50

标签: c# list

我想在列表的后面添加一个新项目,并获取新创建的项目。

让我们假设我们可以暂时做这样的事情:

class Temp
{
    public string First { get;set;}
    public string Second { get;set;}
}
List<string> list = new List<string>();
var newItem = list.Push();
newItem.First="asd";
newItem.Second = "qwe;

这比

更容易
var newItem = new Temp();
newItem.First="asd";
newItem.Second = "qwe;
list.Add(newItem);

,尤其是当我无法使用自动属性时。

这可能吗?

2 个答案:

答案 0 :(得分:0)

您可以使用对象初始值设定项:

var list = new List<Temp>();
list.Add(new Temp{ First = "abc", Second = "def" });

或者与集合初始化程序一起使用:

var list = new List<Temp> { new Temp{ First = "abc", Second = "def" } };

这会将您的四个衬垫变成一个衬垫。

或者有多个条目:

var list = new List<Temp> {
    new Temp{ First = "abc", Second = "def" },
    new Temp{ First = "ghi", Second = "jkl" },
    new Temp{ First = "mno", Second = "pqr" }
};

它当然应该是Temp的列表,而不是string的列表。

答案 1 :(得分:0)

除非您实现自己的List类型并添加Push方法,否则唯一的方法是使用无参数构造函数构造List中的T

这是一种扩展方法。

不建议这样做,但这是对您问题的回答。

有些事情 - 我没有编译或运行此代码

public static class ListEx {
  public static T Push<T>(this List<T> list) where T: new() {
    // Create an instance of T.
    var instance = new T();
    // Add it to the list.
    list.Add(instance);
    // Return the new instance.
    return instance;
  }
}