-5

我将如何转换以下代码以使用 ?: 运算符.. 可能吗?

tbtotalamount.Text = string.Format("{0:n2}", dtl.Compute("sum(NetPay)", ""));
if (tbtotalamount.Text.Length == 0)
{
    tbtotalamount.Text = "0";
}
4

2 回答 2

10

引用的代码不会受益于使用? :称为条件运算符的运算符(有时称为“三元运算符”,尽管从技术上讲,它只是一个三元运算符——例如,具有三个操作数的运算符)。

通常,当您有一个变量并希望根据条件为其分配两个值之一时,条件运算符很方便。所以以这种形式编写代码:

if (someCondition) {
    a = "one value";
}
else {
    a = "a different value";
}

可以改写

a = someCondition ? "one value" : "a different value";

但是,在您的情况下,tbtotalamount.Text直到您string.Format完成if.

于 2012-05-01T11:54:37.793 回答
4

是的。就是这样:

string test = string.Format("{0:n2}", dtl.Compute("sum(NetPay)", ""));
tbttotalamount.Text = test.length == 0 ? "0" : test;

很抱歉看到这么多反对票,我不熟悉?(三元)运算符也很长一段时间。我认为它非常方便。

它的左侧是您的测试表达式,它应该是评估后的布尔值。右侧是运算符返回的内容:如果为 true,它将返回 . 左侧的值:。如果为 false,则为右侧的值。请注意,整个表达式会返回一些内容,编译器需要您对其进行处理。您不能使用三元运算来替换调用返回类型为 的函数的 if-else 语句void

我的意思是,很多以前从未使用过它的人(比如我)似乎认为这是一个纯粹的if-else 替代品,但事实并非如此

于 2012-05-01T11:54:29.693 回答