【发布时间】:2015-11-11 12:26:39
【问题描述】:
我在用 C# 编写棋盘游戏时遇到了一个 setter 问题。
这里我有一个 if 语句,我得到一个新的随机数并尝试更新我的玩家 p 的位置。
if(Console.ReadLine().Equals("Y"))
{
int roll = dice.roll();
Console.WriteLine(p.playerName + " rolled: " + roll);
int newPosition = p.position + roll;
p.position = newPosition;
Console.WriteLine("The players position is: " + p.position);
}
这是 Player 类中位置的设置器。
public int position
{
get
{
return _position;
}
set
{
Console.WriteLine("Position is: " + position);
_position = position;
}
}
private int _position;
我的问题是设置器中的值似乎变为零。
输出:
滚动? (Y/N)Y
玩家 1 掷出:4
Position is: 0 // 在 Player 位置设置器中打印
玩家位置是:0 //从玩家对象获取值时打印出来
当我发送一个值时,为什么setter中位置0的值是4?
【问题讨论】:
-
尝试在 setter 中使用
_position = value;而不是_position = position;。 -
这解决了!谢谢奥利弗。
-
假设这是现代 C#,你可以写
public int Position { get; set; }。如果您使用 Unity,我认为这是不支持的。
标签: c#