我想在列表的后面添加一个新项目,并获取新创建的项目。
让我们假设我们可以暂时做这样的事情:
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);
,尤其是当我无法使用自动属性时。
这可能吗?
答案 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;
}
}