代码之家  ›  专栏  ›  技术社区  ›  cchampion

使用C#条件运算符时出现编译器错误

  •  7
  • cchampion  · 技术社区  · 14 年前

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

        String str;
        bool b = true;
        b ? str="true" : str="false";
    
        Console.Out.WriteLine(str);
    


    错误CS1002:;预期
    程序.cs(13,28):
    错误CS1525:无效的表达式项“:”

    错误CS1002:;预期

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

    更新: 你们中大约有10个人给出了正确的答案,哈哈,所以我将奖励第一个提交答案的人。

    我这样做的实际代码是:

    ftp.ConnectMode = job.FTPUsePassiveMode ? FTPConnectMode.PASV : FTPConnectMode.ACTIVE;
    
    7 回复  |  直到 14 年前
        1
  •  15
  •   Jeff Yates    14 年前

    您的代码应为:

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

    然而,这类似于打电话 b.ToString().ToLower()

    更新
    如评论中所述 conditional operator 返回一个值;它不是用于控制流的 if / else

        2
  •  15
  •   Tim Cooper    13 年前
    str = b ? "true" : "false";
    

    但你可以这样做:

    str = b.ToString();
    

    或者干脆把中间人都剪掉:

    Console.WriteLine(b);
    
        3
  •  4
  •   Adam Robinson    14 年前

    str= b ? "true" : "false"
    

    b.ToString() 问题,但我假设这只是一个例子)。

        4
  •  2
  •   Yoopergeek    14 年前
        5
  •  1
  •   RC.    14 年前
    str = (b) ? "true" : "false";
    
        6
  •  0
  •   Ben Voigt    14 年前

    三元运算符不能是C#中语句的顶级,因为C#要求顶级表达式具有副作用。

        7
  •  -1
  •   jrista    14 年前

    bool b = true;
    string str = b.ToString();