如果我点击某个按钮,则应选择其他X
和O
。但它只是X
但不是O
为什么?
我已将轮流作为布尔变量并使用反向符号来取代替代。
Button b = (Button)sender;
if (turn)
{
b.Text = "X";
}
else
{
b.Text = "O";
}
turn = !turn;
答案 0 :(得分:1)
我相信你会在这些方面寻找一些东西:
protected void btnExample_Click(object sender, EventArgs e)
{
var button = (Button)sender;
if(Session["Turn"] == null)
Session.Add("Turn", true);
var turn = (bool)Session["Turn"];
if(turn)
{
Session["Turn"] = false;
button.Text = "X";
}
else
{
Session["Turn"] = true;
button.Text = "O";
}
}
您在会话中使用全局本质,这可能会引入问题和奇怪的测试用例。特别是因为它会持续很短的时间,但这会起作用。随着更多的要求,可能会得到更好的答案,但是你会得到代码的概念以及为什么它会在更长的时间内跟踪。
答案 1 :(得分:0)
我不清楚为什么你在这里使用变量 - 看起来你只是在两个值之间切换按钮文本......如果是这样,为什么不呢:
Button b = (Button)sender;
if (b.Text = "0")
{
b.Text = "X";
}
else
{
b.Text = "O";
}
或者如果你必须使用'turn'变量,那么你需要根据决定因素来初始化它 - 例如:
if (b.Text = "X") /*or whatever the determining factor is -- maybe you need to do a lookup here instead -- request.querysting("turn"), viewstate("turn"), etc.*/
{
turn = 1;
}
else
{
turn = 0;
}
然后你可以改变按钮文字:
Button b = (Button)sender;
if (turn)
{
b.Text = "X";
}
else
{
b.Text = "O";
}
然后在这里 - 如果你在某处存储'turn'的新值......
viewstate("turn") = !turn;
(或者无论你在哪里存放它......)