无法使用实例引用访问
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."
虽然我可以做到:
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
:
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."