无法使用实例引用访问

Jac*_*per 2 c# system.diagnostics

虽然我可以这样做:

System.Diagnostics.Process.Start(@"C:\MyFolder\MyProgram.cmd");
Run Code Online (Sandbox Code Playgroud)

我不能这样做:

var process = new System.Diagnostics.Process();
process.Start(@"C:\MyFolder\MyProgram.cmd");
Run Code Online (Sandbox Code Playgroud)

错误:无法使用实例引用访问成员“System.Diagnostics.Process.Start(string)”;用类型名称来限定它。

这背后的原因是什么?谁能解释一下?

提前致谢!

Qua*_*tic 5

所有参数化的重载Process.Start都是静态的。如果你想使用第二种语法,那么你必须首先设置实例状态,它只是以下的“文件名”属性StartInfo

var proc = new Process();
proc.StartInfo.FileName = @"C:\MyFolder\MyProgram.cmd";
proc.Start();
Run Code Online (Sandbox Code Playgroud)

请注意,这应该等同于System.Diagnostics.Process.Start(@"C:\MyFolder\MyProgram.cmd");因为正如MSDN所说:“重载是创建新 Process 实例、设置 StartInfo 属性的 FileName 成员以及为 Process 实例调用 Start 的显式步骤的替代方法。”