?:三元运算符,后面有两个声明

时间:2018-11-15 21:22:34

标签: c#

在每种情况下要执行多个操作时,可以使用三元运算符吗?

var replace = list[row][col + 1] == "P" ? list[row][col] = "P", list[row][col] 
= "P" : list[row][col + 1] = ".";

1 个答案:

答案 0 :(得分:1)

编写此代码的方式是:

if (list[row][col + 1] == "P")
{
    //multiple operations
}
else
{
    //multiple operations
}

三元运算符并不意味着支持运算。它支持在两个值之间进行选择。您确实不应该在?标记之后分配任何内容。

事实证明,=运算符不仅会赋值,而且还会返回一个值,所以您可能找出某种方法使之起作用,例如通过初始化数组带有赋值结果的几个值:

// If c is true, a will be set to "A" and b will b e set to "B"
var q = c ? new[]{ a = "A", b="B"} : new string[]{};

但这不是?:运算符的使用方式,它会使代码非常混乱。