2

好吧,我无法弄清楚到底发生了什么。

我声明并初始化了一个字典:

public Dictionary<byte, Color> blobType = new Dictionary<byte, Color>();

但是我不能在课堂上使用它,智能也不会显示它。如果我尝试像这样使用它,我会收到错误:

blobType.add(1, Color.White);

或者,如果我不初始化它并稍后尝试:

    public Dictionary<byte, Color> blobType;
    blobType = new Dictionary<byte, Color>();

仍然不能使用它,它就像它没有看到它在那里的 blobType。

我尝试重命名变量,在 VS2012 中进行,仍然发生同样的事情。因此,当该类是另一个类中的对象时,它可以在该类之外访问它。但是 VS2010 C# Express 在我声明它的类中拒绝承认它的存在。这是怎么回事?

根据要求,全班:

namespace blob
{
    class Blob
    {
        public Texture2D texture;

        public Dictionary<byte, Color> blobType = new Dictionary<byte, Color>();
        blobType.add(1, Color.White);

        public Vector2 position;

        private float scale = 1;
        public float Scale
        {
            get { return scale; }
            set { scale = value; }
        }

        public Blob(Texture2D texture, float scale)
        {
            this.texture = texture;
            this.Scale = scale;
        }

        public void Draw(SpriteBatch spriteBatch)
        {
            spriteBatch.Draw(texture, position, null, Color.White, 0, Vector2.Zero, Scale, SpriteEffects.None, 0);
        }
    }
}

EDIT2:大写添加,同样的事情。错误:

Error   1   Invalid token '(' in class, struct, or interface member declaration C:\Users\Iurie\Documents\Visual Studio 2010\Projects\blob\blob\blob\Blob.cs 20  21  blob

Error   2   Invalid token ')' in class, struct, or interface member declaration C:\Users\Iurie\Documents\Visual Studio 2010\Projects\blob\blob\blob\Blob.cs 20  36  blob

Error   3   'blob.Blob.blobType' is a 'field' but is used like a 'type' C:\Users\Iurie\Documents\Visual Studio 2010\Projects\blob\blob\blob\Blob.cs 20  9   blob

Error   4   'Microsoft.Xna.Framework.Color.White' is a 'property' but is used like a 'type' C:\Users\Iurie\Documents\Visual Studio 2010\Projects\blob\blob\blob\Blob.cs 20  31  blob
4

3 回答 3

8

您不能在 C# 中的方法之外执行代码。要将一组默认条目添加到字典中,请将它们添加到 Blob 类的构造函数中。

于 2012-12-24T23:16:27.120 回答
2

您不能在方法之外执行代码。要添加默认值,请在构造函数中调用 add 。

class Blob
{
    public Texture2D texture;

    public Dictionary<byte, Color> blobType = new Dictionary<byte, Color>();

    public Blob() 
    {
        blobType.add(1, Color.White);
    }
}
于 2012-12-24T23:20:06.130 回答
0

这将满足您的需求:

class Blob
{
    public Texture2D texture;

    public Dictionary<byte, Color> blobType = new Dictionary<byte, Color>() { { 1, Color.White } };

    public Vector2 position;

    private float scale = 1;
    public float Scale
    {
        get { return scale; }
        set { scale = value; }
    }

    public Blob(Texture2D texture, float scale)
    {
        this.texture = texture;
        this.Scale = scale;
    }

    public void Draw(SpriteBatch spriteBatch)
    {
        spriteBatch.Draw(texture, position, null, Color.White, 0, Vector2.Zero, Scale, SpriteEffects.None, 0);
    }
}
于 2012-12-24T23:27:36.300 回答