使用C#条件运算符的编译器错误

cch*_*ion 7 c# conditional-operator

我似乎无法在谷歌上找到我需要的东西,打赌我会在这里得到快速答案.

    String str;
    bool b = true;
    b ? str="true" : str="false";

    Console.Out.WriteLine(str);
Run Code Online (Sandbox Code Playgroud)

那个?:语法对我来说是正确的.我收到了编译器错误.

Program.cs(
13,28 ):错误CS1002 :; 期望的
Program.cs(
13,28 ):错误CS1525:无效的表达式术语':'
Program.cs(13,30):
错误CS1002 :; 预期

不确定csharp语法,但是在cpp中构建.请帮忙!谢谢!

更新:大约10个人给出正确的答案LOL,所以我只会奖励提交它的第一个人.

有趣的语法,我认为我实际上比c ++语法更喜欢它.

我这样做的实际代码是:

ftp.ConnectMode = job.FTPUsePassiveMode ? FTPConnectMode.PASV : FTPConnectMode.ACTIVE;
Run Code Online (Sandbox Code Playgroud)

Jef*_*tes 15

您的代码应为:

str = b ? "true" : "false";
Run Code Online (Sandbox Code Playgroud)

但是,这类似于只是打电话b.ToString().ToLower().也就是说,我怀疑你的实际用例比将布尔值转换为字符串要复杂一些.

更新
如注释中所示,条件运算符返回一个值; 它不像if/ 那样的控制流程else.

  • 相关点是三元运算符(?:)是一个返回值的表达式,而不是控制流机制(如if/else). (8认同)

Ken*_*art 15

str = b ? "true" : "false";
Run Code Online (Sandbox Code Playgroud)

但你可以这样做:

str = b.ToString();
Run Code Online (Sandbox Code Playgroud)

甚至完全切断了中间人:

Console.WriteLine(b);
Run Code Online (Sandbox Code Playgroud)