我从 C#/WPF 添加了意外行为
private void ButtonUp_Click(object sender, RoutedEventArgs e)
{
int quant;
if( int.TryParse(Qnt.Text, out quant))
{
string s = ((quant++).ToString());
Qnt.Text = s;
}
}
所以,如果我得到 Quant 为 1,Quant 将增加到 2。但是 s 字符串将为 1。这是一个优先级问题吗?
EDIT:
我将其重写为:
quant++;
Qnt.Text = quant.ToString();
现在这按我的预期工作了。
您正在使用post-增量运算符。这会计算出原始值,然后递增。要在一行中完成您想做的事情,您可以使用pre- 改为增量运算符。
(++quant).ToString();
但更好的是避免所有这些陷阱并这样做:
quant++;
string s = quant.ToString();
对于第一个版本,您必须考虑事情发生的顺序。在第二个版本中不需要思考。始终更重视代码的清晰度而不是简洁性。
人们很容易相信单行版本在某种程度上更快,但事实并非如此。在 20 世纪 70 年代的 C 系统中,这可能是正确的,但即便如此,我对此表示怀疑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)