循环通过IList,但使用for循环,而不是每个

Ste*_*ger 3 c# for-loop

我有一个IList的对象.它们的类型为NHibernate.Examples.QuickStart.User.还有一个EmailAddress公共字符串属性.

现在我可以使用for循环遍历该列表.
是否可以通过简单的for循环遍历Ilist?
因为简单地将IList视为一个数组似乎不起作用......

System.Collections.IList results = crit.List();

foreach (NHibernate.Examples.QuickStart.User i in results)
{
    Console.WriteLine(i.EmailAddress);
}

for (int i = 0; i < results.Count; ++i)
{
    Console.WriteLine(results[i].EmailAddress); // Not Working
}
Run Code Online (Sandbox Code Playgroud)

Eri*_*ich 7

由于您使用的是非通用IList,因此您需要转换值:

for (int i = 0; i < results.Count; ++i)
    {
        Console.WriteLine(((NHibernate.Examples.QuickStart.User)results[i]).EmailAddress); // Not Working
    }
Run Code Online (Sandbox Code Playgroud)

或者,您可以通过将第1行更改为:来使IList成为通用版本:

System.Collections.IList<NHibernate.Examples.QuickStart.User> results = crit.List();

请注意,对于此解决方案,您必须更改crit.List()函数以返回此类型.