我将如何转换以下代码以使用 ?: 运算符.. 可能吗?
tbtotalamount.Text = string.Format("{0:n2}", dtl.Compute("sum(NetPay)", ""));
if (tbtotalamount.Text.Length == 0)
{
tbtotalamount.Text = "0";
}
我将如何转换以下代码以使用 ?: 运算符.. 可能吗?
tbtotalamount.Text = string.Format("{0:n2}", dtl.Compute("sum(NetPay)", ""));
if (tbtotalamount.Text.Length == 0)
{
tbtotalamount.Text = "0";
}
引用的代码不会受益于使用? :
称为条件运算符的运算符(有时称为“三元运算符”,尽管从技术上讲,它只是一个三元运算符——例如,具有三个操作数的运算符)。
通常,当您有一个变量并希望根据条件为其分配两个值之一时,条件运算符很方便。所以以这种形式编写代码:
if (someCondition) {
a = "one value";
}
else {
a = "a different value";
}
可以改写
a = someCondition ? "one value" : "a different value";
但是,在您的情况下,tbtotalamount.Text
直到您string.Format
完成if
.
是的。就是这样:
string test = string.Format("{0:n2}", dtl.Compute("sum(NetPay)", ""));
tbttotalamount.Text = test.length == 0 ? "0" : test;
很抱歉看到这么多反对票,我不熟悉?(三元)运算符也很长一段时间。我认为它非常方便。
它的左侧是您的测试表达式,它应该是评估后的布尔值。右侧是运算符返回的内容:如果为 true,它将返回 . 左侧的值:
。如果为 false,则为右侧的值。请注意,整个表达式会返回一些内容,编译器需要您对其进行处理。您不能使用三元运算来替换调用返回类型为 的函数的 if-else 语句void
。
我的意思是,很多以前从未使用过它的人(比如我)似乎认为这是一个纯粹的if-else 替代品,但事实并非如此。