foreach (Process newprcs in oPrcs)
{
newprocid = (UInt32)newprcs.Id;
if (!oNewProcs.Contains(newprocid)) //checking process id contain or not
{
oNewProcs.Add(newprocid);
// MessageBox.Show(newprocid.ToString());
uIdOfProcess = newprocid;
//MessageBox.Show(uIdOfProcess.ToString(),"ProcessId");
CInjector.HookingAPI(uIdOfProcess, "HookPrintAPIs.dll");
}
}
答案 0 :(得分:8)
这取决于oPrcs
的类型。如果它是Process[]
那么它将是:
for (int i = 0; i < oPrcs.Length; i++)
{
Process newprcs = oPrcs[i];
...
}
否则,如果oPrcs
的类型实现了IEnumerable<Process>
(它确实没有拥有,但通常会这样做),你会得到:
using (IEnumerator<Process> iterator = oPrcs.GetEnumerator())
{
while (iterator.MoveNext())
{
Process newprcs = iterator.Current;
...
}
}
说了这么多,我通常不会将foreach
循环转换为for
循环......
答案 1 :(得分:4)
假设oPrcs
是IList<Process>
(因此它具有Count
属性,并且可以通过索引访问项目):
for (int i = 0; i < oPrcs.Count; i++)
{
Process newprcs = oPrcs[i];
if (!oNewProcs.Contains(newprocid)) //checking process id contain or not
{
oNewProcs.Add(newprocid);
// MessageBox.Show(newprocid.ToString());
uIdOfProcess = newprocid;
//MessageBox.Show(uIdOfProcess.ToString(),"ProcessId");
CInjector.HookingAPI(uIdOfProcess, "HookPrintAPIs.dll");
}
}