我不知道为什么我收到错误CS1061

时间:2016-12-06 09:58:50

标签: c#

我正在研究一名身份测试员。我每秒都得到错误CS1061。 这是我的代码:

Process[]roblox=Process.GetProcessesByName("RobloxPlayerBeta.exe");
Console.WriteLine("Id of RobloxPlayerBeta.exe is:", roblox.Id);
int id = roblox.Id;

2 个答案:

答案 0 :(得分:2)

编译器错误CS1061将为您提供有关此错误原因的更多详细信息。但在您的问题中,您没有包含错误详细信息的最重要部分。 roblox是数组,如果你需要获取进程的id,那么你需要获取数组中的项。数组项可以通过索引访问

Process[]roblox=Process.GetProcessesByName("RobloxPlayerBeta.exe");

if(roblox!=null && roblox.Length >0)
{
  Console.WriteLine("Id of RobloxPlayerBeta.exe is:", roblox[0].Id);
  int id = roblox[0].Id;
}

答案 1 :(得分:2)

您有一系列进程roblox,但尝试访问整个事物的Id属性,而不是...进程。为了解决这个问题,您必须实际选择要使用<{p>}的Id的索引

Process[] roblox = Process.GetProcessesByName("RobloxPlayerBeta.exe");
if(roblox.GetLength(0) > 0) //Check that any processes exist with that name
{
    int id = roblox[0].Id; //set ID first as to avoid accessing the array twice
    Console.WriteLine("Id of RobloxPlayerBeta.exe is:" + id); //Write the line using the newly found id variable
}
else //If the process doesn't exist
{
    Console.WriteLine("RobloxPlayerBeta.exe is not running"); //Output error of sorts
}

此处还修复了Console.WriteLine(),您使用它的方式需要像Console.WriteLine("Id of RobloxPlayerBeta.exe is:{0}", id);这样的参数,或者像我在示例中那样使用连接。你似乎尝试了两者的混合,这是行不通的

如果您在掌握数组方面遇到任何问题,请阅读of this article

为了解释它,关于你有一个数组的问题,例如

string[] stringArray = new string[] {"hello", "hi"};

您可以像这样访问其包含的对象

string firstIndex = stringArray[0]; //for the first index
string secondIndex = stringArray[1]; //for the second index

如果我们当时写这个

Console.WriteLine(firstIndex + secondIndex);

输出hellohi

作为旁注,您收到错误 CS1061 ,因为您正在尝试访问不存在的数组属性

注意:一个有趣的单行,使用-1表示流程未运行

int id = Process.GetProcessesByName("RobloxPlayerBeta.exe")?[0].Id ?? -1;