不知道为啥我得到“非静态字段需要对象引用”
Posted
技术标签:
【中文标题】不知道为啥我得到“非静态字段需要对象引用”【英文标题】:Not sure why I'm getting "An object reference is required for the non-static field"不知道为什么我得到“非静态字段需要对象引用” 【发布时间】:2017-12-12 03:48:30 【问题描述】:我的代码如下。任何帮助,将不胜感激。如果这是一个简单的错误,我提前道歉 - 我仍然是 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)
错误出现在“Levels.AliensSetUp(1, 2, 50, 0, 0, 0, mainGame)”中的“mainGame”上。我也尝试用“game1”替换“mainGame”,但我也得到了一个错误。谢谢你能给我的任何帮助。
【问题讨论】:
您需要了解static members vs instance members in C#。您缺少一些基本的面向对象编程概念。 您正在尝试使用类名 (Levels
) 调用 AliensSetUp
方法。相反,您需要使用您创建的对象的实例 (level
)。根据您问题中的代码,它将是level.AlensSetUp(...)
。
解决了 - 谢谢!
【参考方案1】:
级别不是静态的。您已经“新建”了 Levels 类,然后调用它的 AliensSetUp() 方法。例如:
var levels = new Levels();
levels.AliensSetup(...)
【讨论】:
他没有对 Game1 做任何事情。他试图将类型本身分配给该类型的一个实例。他不知道“实例”和“静态”是什么意思。 谢谢,澄清了。它应该是: var levels = new Levels(); levels.AliensSetup... 我认为这属于答案,而不是评论。 嘿,我确实有“Levels level = new Levels();”在我的代码中。我不得不简化堆栈溢出的代码,但我忘记添加了。不过感谢您的帮助。以上是关于不知道为啥我得到“非静态字段需要对象引用”的主要内容,如果未能解决你的问题,请参考以下文章
我的应用程序不断崩溃,大概是因为空对象引用错误,但我不知道为啥
我得到一个“TypeError:'int'对象没有属性'_getitem',我不知道为啥