C# 什么';这是进程[]和进程()[]之间的区别

C# 什么';这是进程[]和进程()[]之间的区别,c#,C#,我在为我的模式扫描仪做研究,但我遇到了这个问题 我看到的模式扫描器需要一个过程的处理程序,但我的方式是这样做的 Process[] P = Process.GetProcessesByName("pName"); 没有p.Handle,我去了msdn,但那里说有。但为什么我的不呢 这两行代码之间有什么区别 Process P = Process.GetProcessesByName("pName")[0]; Process[] P = Process.GetProcessesByName("p

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

我看到的模式扫描器需要一个过程的处理程序,但我的方式是这样做的

Process[] P = Process.GetProcessesByName("pName");
没有p.Handle,我去了msdn,但那里说有。但为什么我的不呢

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

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

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

请注意,如果没有任何异常,这将导致“索引超出边界”异常

这将获取名称为“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
}

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

请注意,如果没有任何异常,这将导致“索引超出边界”异常

这将获取名称为“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
}

getProcessByName
返回
进程的数组。具有
句柄
属性。因此,您需要选择一个返回的
进程
对象并调用
.Handle
。注意第一行末尾的
[0]
,这将返回数组中的第一个元素。好的,谢谢。这对我来说有点明显,但我只是想确定一下。
getProcessByName
返回一个
Process
数组。具有
句柄
属性。因此,您需要选择一个返回的
进程
对象并调用
.Handle
。注意第一行末尾的
[0]
,这将返回数组中的第一个元素。好的,谢谢。这对我来说很明显,但我只是想确定一下。