非静态字段,方法或属性需要对象引用
我写了一个非常小的函数来在C#NET中启动Java应用程序,但是我收到错误“非静态字段,方法或属性需要对象引用’MinecraftDaemon.Program.LaunchMinecraft()’C:\用户\麦克\桌面\我的世界\ MinecraftDaemon \的Program.cs”。 我已经搜索了遭受同样问题的其他线程,但我不明白它意味着什么或为什么我得到它。
namespace MinecraftDaemon { class Program { public void LaunchMinecraft() { ProcessStartInfo processInfo = new ProcessStartInfo("java.exe", "-Xmx1024M -Xms1024M -jar minecraft_server.jar nogui"); processInfo.CreateNoWindow = true; processInfo.UseShellExecute = false; try { using (Process minecraftProcess = Process.Start(processInfo)) { minecraftProcess.WaitForExit(); } } catch { // Log Error } } static void Main(string[] args) { LaunchMinecraft(); } } }
您需要将其更改为:
public static void LaunchMinecraft()
这样,静态Main
方法可以访问静态LaunchMinecraft
方法。
LaunchMinecraft
不是静态方法,因此您无法在静态方法Main
访问它,而无需从Program
对象调用它。
两种选择
1.使LaunchMinecraft
静态
public void LaunchMinecraft() { ... }
2.在Main
创建一个新的Program
对象并以此方式调用它。
var program = new Program(); program.LaunchMinecraft();
您试图从静态方法(一种没有特定对象的方法)调用实例方法(即需要特定对象进行操作的方法)。 使LaunchMinecraft
方法也是静态的。
我对C#了解不多,但Main()
方法是静态的,而LaunchMinecraft()
则不是,这就是导致此错误的原因。
static void Main(string[] args) { Program pg = new Program(); pg.LaunchMinecraft(); }
尝试这个。