无法使用实例引用进行访问
本文关键字:访问 引用 实例 | 更新日期: 2023-09-27 18:08:46
虽然我可以这样做:
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.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所说:"重载是创建新Process实例,设置StartInfo属性的FileName成员,并为Process实例调用Start的显式步骤的替代方法。"
这是一个静态方法。您不能在Process
的实例上使用它:
public static Process Start(string fileName)
使用空的Start()方法,该方法被设计为在实例中工作:
启动(或重用)由process组件的StartInfo属性指定的进程资源,并将其与组件关联。
这是因为System.Diagnostics.Process.Start(string)
是一个静态方法。
不能从该类的实例调用该类的静态成员。
这与通过this.MyStaticMethod()
在实例方法中调用私有静态方法相同。
编辑:您可能希望设置进程的StartInfo
,然后调用Start
方法。