как преобразовать цикл foreach в цикл for в c # - PullRequest
3 голосов
/ 24 июня 2010
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");
    }
}

Ответы [ 2 ]

8 голосов
/ 24 июня 2010

Зависит от типа 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 ...

4 голосов
/ 24 июня 2010

Предполагая, что 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");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...