【发布时间】:2014-03-28 15:23:08
【问题描述】:
据我了解,集合初始化器的使用取决于两件事:
- 集合实现 IEnumerable
- Add() 方法
据我所知,System.Data.DataTable.Rows 满足这两个要求,因此我希望我可以这样做:
DataRow row = _dt.Tables["TABLE"].NewRow();
_dt.Tables["TABLE"].Rows =
{
row
};
编译器抱怨:
- Rows 没有设置器(但我没有创建新集合,只是通过提供的引用添加到现有集合
也许你可以指出我的错误。
更新:
我刚刚意识到我的问题在于DataRowCollection,它没有实现IEnumerable,但确实有一个Add() 方法。因此,我认为这纯粹是因为 IEnumerable 没有实现,这是否正确?如果是,为什么不能添加到 BCL 中?
更新:
请参阅此代码,该代码显示您可以使用初始化程序添加到现有集合:
public class Person
{
public Person()
{
friends.Add("Paul");
}
List<string> friends = new List<string>();
public List<string> Friends
{
get { return friends; }
}
}
Person tom = new Person
{
//Adding to an existing collection NOT creating a new one
Friends = {"Steve", "Jim", "John"}
};
【问题讨论】:
标签: c# collections ienumerable