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 に答える