传递字符串作为参数

时间:2018-12-15 00:42:41

标签: c#

我目前正在使用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";
    }
}

}

2 个答案:

答案 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)