我正在为我的模式扫描仪做研究,但我遇到了这个问题。
我看到的模式扫描仪需要一个过程的处理程序,但我这样做的方式
Process[] P = Process.GetProcessesByName("pName");
没有P.Handle
,我去了 msdn,但它说它有。但为什么我的没有呢?
这两行代码有什么区别?
Process P = Process.GetProcessesByName("pName")[0];
Process[] P = Process.GetProcessesByName("pName");
这将获取名称为"pName"的第一个进程:
Process P = Process.GetProcessesByName("pName")[0];
请注意,如果没有"索引越界"异常,这将导致"索引越界"异常。
这将获取名称为"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
}