13

最初に検索したところ、他のさまざまなことで同様の問題がたくさん見つかりましたが、この問題は正確ではありませんでした。

私はこのコードを持っています:

namespace New_Game.GameClasses
{
    /// <summary>
    /// This is a game component that implements IUpdateable.
    /// </summary>
    public class Error : Microsoft.Xna.Framework.GameComponent
    {
        bool gameOver = false;
        List<Enemy> enemies = new List<Enemy>();

        public bool gameOver {
            get { return gameOver; }
            set { gameOver = value; }
        }

        public override void Update(GameTime gameTime, Vector2 target)
        {
            // TODO: Add your update code here
            Rectangle playerRect = new Rectangle((int)target.X, (int)target.Y, 64, 64);

            foreach (Enemy e in enemies)
            {
                e.Target = target;
                e.Update(gameTime);
                Rectangle enemyRect = new Rectangle((int)e.Position.X + 7, (int)e.Position.Y + 7, 32 - 7, 32 - 7);

                if (playerRect.Intersects(enemyRect))
                {
                    gameOver = true;
                }
            }
        }
    }
}

私の問題は、「New_Game.GameClasses.Error.gameOver」と「New_Game.GameClasses.Error.gameOver」の間のあいまいさというエラーで発生します

get/set メソッドを削除すると、Game1.cs から gameOver にアクセスしようとすると、別のエラーが発生します。次のように変更すると、同じエラーが発生します。

public bool gameOver { get; set; }

私の質問は、あいまいなエラーを解決するにはどうすればよいですか?

4

4 に答える 4

27

プライベート gameOver 変数の名前を変更する必要があります。これを変える:

bool gameOver = false;
public bool GameOver {
        get { return gameOver; }
        set { gameOver = value; }
    }

bool _gameOver = false;
public bool GameOver {
        get { return _gameOver; }
        set { _gameOver = value; }
    }

1 つのクラスで同じ変数名を使用することはできません。

または、最近のバージョンの .Net を使用していると仮定すると、プライベート変数を削除して、次のようにすることもできます。

public bool GameOver { get; set; }

幸運を。

于 2013-01-17T03:35:46.040 に答える
2

私の場合、 agregarPropiedad2 によってクラス agregarPropiedad の名前を変更することで解決されました。

.CS

public partial class agregarPropiedad2

デザイナー.CS

public partial class agregarPropiedad2

ASPX

Inherits="ProjectName.agregarPropiedad2"
于 2015-04-07T18:07:04.683 に答える
2

プライベート変数にパブリック変数とは異なる名前を付けます。

bool _gameOver = false;

public bool gameOver {
    get { return _gameOver; }
    set { _gameOver = value; }
}
于 2013-01-17T03:36:26.650 に答える
1

クラスの 2 つのコンポーネントに同じ名前を使用することはできません。したがって、これを変更します。

bool gameOver = false;

public bool gameOver
{
    get { return gameOver; }
    set { gameOver = value; }
}

これに:

private Boolean m_GameOver = false;

public Boolean GameOver
{
    get { return m_GameOver; }
    set { m_GameOver = value; }
}
于 2013-01-17T03:35:36.833 に答える