在PHP中,我可以这样做:
$list = array("element1", "element2");
foreach ($list as $index => $value) {
// do stuff
}
在C#中我可以写:
var list = new List<string>(){ "element1", "element2" };
foreach (var value in list)
{
// do stuff ()
}
但是如何在C#版本中访问索引值?
答案 0 :(得分:2)
我喜欢JarredPar的解决方案:
foreach ( var it in list.Select((x,i) => new { Value = x, Index=i }) )
{
// do stuff (with it.Index)
}
和Dan Finch的解决方案:
list.Each( ( str, index ) =>
{
// do stuff
} );
public static void Each<T>( this IEnumerable<T> ie, Action<T, int> action )
{
var i = 0;
foreach ( var e in ie ) action( e, i++ );
}
我选择了Dan Finch的方法来提高代码的可读性
(我不需要使用continue
或break
)
答案 1 :(得分:1)
我不确定是否可以在索引中获取索引。只需添加一个新变量i,然后递增它;这可能是最简单的方法......
int i = 0;
var list = new List<string>(){ "element1", "element2" };
foreach (var value in list)
{
i++;
// do stuff ()
}
答案 2 :(得分:1)
如果您有List
,那么您可以使用索引器+ for循环:
var list = new List<string>(){ "element1", "element2" };
for (int idx=0; idx<list.Length; idx++)
{
var value = list[idx];
// do stuff ()
}
答案 3 :(得分:1)
如果您想访问索引,则应使用进行循环
for(int i=0; i<list.Count; i++)
{
//do staff()
}
i 是索引