如何将以下代码转换为使用?:运算符..是否可能?
tbtotalamount.Text = string.Format("{0:n2}", dtl.Compute("sum(NetPay)", ""));
if (tbtotalamount.Text.Length == 0)
{
tbtotalamount.Text = "0";
}
答案 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替代品,它是不强>