我目前正在使用C#进行游戏,但是发生了一个困扰我的问题。问题是,我不知道如何获得打印出来的字符串'sprite'的赋值。我正在开发的游戏将为sprite字符串分配多个值,这就是为什么我在声明字符串时不只是为其分配值的原因。
为简单起见,我将场景简化为一个更简单的示例。
class Program
{
static void Main(string[] args)
{
Player p;
p = new Player();
Console.Read();
}
}
class GameObject
{
public GameObject(string spriteName)
{
Console.WriteLine(spriteName);
}
}
class Player : GameObject
{
public static string sprite;
public Player() : base(sprite)
{
sprite = "Test";
}
}
}
答案 0 :(得分:1)
这里的问题是base
构造函数在派生类构造函数之前被调用,因此sprite
的值当时是null
。
解决此问题的最简单方法可能是在初始化sprite
字段时为其提供默认值(并有可能将其从实例构造函数中删除,除非您始终希望将静态字段重置为默认值)实例构造函数被调用时的值)。
另外,请注意,如果其值永远不会改变,则可以将其设置为const
。
还有一个旁注-public
字段在c#中通常为PascalCase
:
class Player : GameObject
{
public static string Sprite = "Test";
public Player() : base(Sprite)
{
}
}
答案 1 :(得分:0)
将https://dotnetfiddle.net/9T9vBV分配给sprite
之前,您正在调用base(null)