我想首先说我先搜索过,并在其他各种事情上发现了很多类似的问题,但这不是问题。
我有这段代码:
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; }
我的问题是,我该如何解决歧义错误?
答案 0 :(得分:22)
您需要重命名您的私人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; }
}
您不能在单个类中使用相同的变量名称。
或者,假设您使用的是.Net的最新版本,则可以删除您的私有变量并且只有:
public bool GameOver { get; set; }
祝你好运。
答案 1 :(得分:2)
以与公共变量不同的方式命名私有变量。
bool _gameOver = false;
public bool gameOver {
get { return _gameOver; }
set { _gameOver = value; }
}
答案 2 :(得分:1)
您不能使用相同的名称拥有类的两个组件。所以改变这个:
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; }
}
答案 3 :(得分:1)
就我而言,已经通过agregarPropiedad2解决了重命名类 agregarPropiedad。
<强> .CS 强>
public partial class agregarPropiedad2
<强> Designer.CS 强>
public partial class agregarPropiedad2
<强> ASPX 强>
Inherits="ProjectName.agregarPropiedad2"