2017-07-07 59 views
0

我的代码如下。任何帮助,将不胜感激。如果这是一个简单的错误,我会提前道歉 - 我仍然是C#的初学者(通常是面向对象的)。不知道为什么我会得到“非静态字段需要对象引用”

public class Game1 : Microsoft.Xna.Framework.Game 
{ 
    public void Update() 
    { 
     Levels level = new Levels(); 
     Game1 mainGame = Game1; 
     Levels.AliensSetUp(1, 2, 50, 0, 0, 0, mainGame); 
    } 
} 

class Levels 
{ 
    public void AliensSetUp(int numberRows, int numberColumns, int spaceBetween, int XStart, int YStart, int AlienType, Game1 mainGame) 
} 

该错误是对在 “mainGame” “Levels.AliensSetUp(1,2,50,0,0,0,mainGame)”。我也尝试用“game1”取代“mainGame”,但我也得到了一个错误。感谢您给我的任何帮助。

+2

您需要了解[静态成员VS实例成员在C#(https://msdn.microsoft.com/en-us/library/aa645629(V = vs.71)的.aspx) 。有一些基本的面向对象的编程概念,你错过了。 –

+0

您正尝试使用类的名称('Levels')调用'AliensSetUp'方法。相反,您需要使用您创建的对象('level')的实例。基于你的问题中的代码,它将是'level.AlensSetUp(...)'。 –

+0

修复它 - 谢谢! – Hychet

回答

3

级别不是静态的。你有Levels类的“新”,然后调用它的AliensSetUp()方法。例如:

var levels = new Levels(); 
levels.AliensSetup(...) 
+0

他没有对Game1做任何事情。他试图将类型本身分配给类型的一个实例。他不知道“实例”和“静态”是什么意思。 –

+0

谢谢,澄清说。它应该是:var levels = new Levels(); levels.AliensSetup ... –

+0

我认为属于答案,而不是评论。 –

相关问题