如何使用?:运营商

时间:2012-05-01 11:52:38

标签: c# string conditional-operator

如何将以下代码转换为使用?:运算符..是否可能?

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

2 个答案:

答案 0 :(得分:10)

引用的代码无法使用? :运算符,该运算符称为conditional operator(有时称为“三元运算符”,但从技术上讲,它只是 a 三元运算符 - 例如,具有三个操作数的运算符。)

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

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

可以改写

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

但是,在您的情况下,在您完成tbtotalamount.Text之前,您不知道string.Format是空白的,所以最好将其留给if

答案 1 :(得分:4)

是。方法如下:

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

很抱歉看到这么多的downvotes,我不熟悉? (三元)运营商也很长一段时间。我认为它非常方便。

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

我的意思是说很多以前从未使用它的人(比如我)似乎认为这是一个 if-else替代品,它是