Process []和Process()[]之间的区别是什么

时间:2017-08-17 22:31:38

标签: c#

我正在为我的模式扫描仪做研究,但我遇到了这个问题。

我看到的模式扫描器需要一个进程的处理程序,但我正在这样做

Process[] P = Process.GetProcessesByName("pName");

没有P.Handle我去了msdn,但它说它有。但为什么我的不呢?

这两行代码之间有什么区别?

Process P = Process.GetProcessesByName("pName")[0];
Process[] P = Process.GetProcessesByName("pName");

1 个答案:

答案 0 :(得分:2)

这将获得名为“pName”的第一个进程:

Process P = Process.GetProcessesByName("pName")[0];

请注意,如果没有,则会导致“index out of bounds”异常。

这会获得名称为“pName”的所有进程的列表(或实际数组):

Process[] P = Process.GetProcessesByName("pName");

请注意,如果没有,这不会导致异常;它只会返回一个空数组。

对于后者,如果你想要第一场比赛,你可以像前者一样对其进行索引:

Process[] P = Process.GetProcessesByName("pName");
if (P.Length > 0)
{
    Process process = P[0];  //Get the first one
}
else
{
    Log("No such process!");
}

或(我会这样做)使用LINQ:

Process p = Process.GetProcessesByName("pName").FirstOrDefault();
if (p != null) 
{
    //Do something with the process
}