无法使用实例引用访问

Cannot Access with an Instance Reference

虽然我可以做到:

System.Diagnostics.Process.Start(@"C:\MyFolder\MyProgram.cmd");

我做不到:

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

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

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

提前致谢!

这是一个静态方法。您不能在 Process:

的实例中使用它
public static Process Start(string fileName)

使用空的Start() method,它被设计用来处理一个实例:

Starts (or reuses) the process resource that is specified by the StartInfo property of this Process component and associates it with the component.

那是因为System.Diagnostics.Process.Start(string)是静态方法。

您不能从该类型的实例调用 class 的静态成员。

这与通过this.MyStaticMethod()在实例方法中调用私有静态方法相同。

编辑:您可能想要设置 StartInfo of the Process then invoke the Start 方法。

Process.Start 的所有参数重载都是静态的。如果你想使用第二种语法,那么你必须首先设置实例状态,它只是 StartInfo:

的 "filename" 属性
var proc = new Process();
proc.StartInfo.FileName = @"C:\MyFolder\MyProgram.cmd";
proc.Start();

请注意,这应该等同于 System.Diagnostics.Process.Start(@"C:\MyFolder\MyProgram.cmd");,因为正如 MSDN 所说:"The overload is an alternative to the explicit steps of creating a new Process instance, setting the FileName member of the StartInfo property, and calling Start for the Process instance."