Linq IList接口与具体

Hoo*_*ake 4 c# linq

现在用

IList<string> listOfStrings = (new string[] {  "bob","mary"});
Run Code Online (Sandbox Code Playgroud)

我们不能预先形成

listOfStrings.ToList().ForEach(i => i.DoSome(i)));
Run Code Online (Sandbox Code Playgroud)

我们需要重塑接口的具体实现

List<string> listOfStrings = ((new string[] {  "bob","mary"}).ToLIst();
Run Code Online (Sandbox Code Playgroud)

然后我们可以为每个人做一个

listOfStrings.ForEach(i => i.DoSome(i)));
Run Code Online (Sandbox Code Playgroud)

这是因为foreach运算符不能与IList接口一起使用,为什么会这样?

Jon*_*eet 8

你没有使用foreach运算符 - 你正在使用一个ForEach 方法,它在List<T> (这里)数组中声明.IList<T>或者没有这样的扩展方法IEnumerable<T>.你可以写一个,但我个人使用一个真正的foreach循环:

foreach (var text in listOfStrings)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

请参阅Eric Lippert 关于该主题的博文,其内容比我的清晰得多.