不能在同一个类中使用声明的字典

本文关键字:声明 字典 同一个 不能 | 更新日期: 2023-09-27 17:49:22

好吧,我不知道这到底是怎么回事。

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

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

不能在同一个类中使用声明的字典

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

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

class Blob
{
    public Texture2D texture;
    public Dictionary<byte, Color> blobType = new Dictionary<byte, Color>();
    public Blob() 
    {
        blobType.add(1, Color.White);
    }
}

这将做你正在寻找的:

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);
    }
}