C# IEnumerable不添加项
为什么IEnumerable不添加项 此代码将ITEN添加到值列表:C# IEnumerable不添加项,c#,.net,list,loops,ienumerable,C#,.net,List,Loops,Ienumerable,为什么IEnumerable不添加项 此代码将ITEN添加到值列表: List<String> values = new List<String>(); for (int i = 0; i < ddlTransportadora.Items.Count; i++) { values.Add(ddlTransportadora.Items[i].Value); } 但此代码生成循环,且after值没有iten: IEnumberable<String&
List<String> values = new List<String>();
for (int i = 0; i < ddlTransportadora.Items.Count; i++)
{
values.Add(ddlTransportadora.Items[i].Value);
}
但此代码生成循环,且after值没有iten:
IEnumberable<String> values = new List<String>();
for (int i = 0; i < ddlTransportadora.Items.Count; i++)
{
values.Add(ddlTransportadora.Items[i].Value);
}
有什么想法吗?因为在IList接口中定义的Add方法和IEnumerable不是从IList继承的。您可以改为使用此方法:
IList<String> values = new List<String>();
for (int i = 0; i < ddlTransportadora.Items.Count; i++)
{
values.Add(ddlTransportadora.Items[i].Value);
}
所有这些都将为您提供一个IEnumerable: 您可以使用显式构造函数来构建和填充集合: 新列表ddla.Items.Select x=>x.Value 可以使用LINQ动态创建可枚举集合: ddla.Items.Select x=>x.Value.ToList ddla.Items.Select x=>x.Value.ToArray 您甚至可以跳过创建实际集合,只需使用LINQ DEREFERED execution来提供数据的可枚举视图: ddla.Items.Select x=>x.Value
为什么要让事情变得比需要的复杂?我很惊讶,第二个例子编译时甚至假设它可以编译。IEnumerable没有Add。IEnumerable接口中没有方法Add。另外,第一个示例有什么问题?使用IEnumerable的原因通常是您希望迭代或使用LINQ,但不关心它是否是作为底层源的列表或数组。不是因为你想添加东西。我可以补充一句吗,来自于Enumerable这个词,你能添加东西不是很奇怪吗?