我似乎无法在Google上找到我需要的内容,并打赌我会在这里得到快速回答。
String str;
bool b = true;
b ? str="true" : str="false";
Console.Out.WriteLine(str);
那个? :语法对我来说是正确的。我收到了编译错误。
的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;
答案 0 :(得分:15)
您的代码应为:
str = b ? "true" : "false";
但是,这类似于只调用b.ToString().ToLower()
。也就是说,我怀疑你的实际用例比将布尔值转换为字符串要复杂得多。
<强>更新强>
如评论中所示,conditional operator返回一个值;它不适用于if
/ else
等控制流程。
答案 1 :(得分:15)
str = b ? "true" : "false";
但你可以这样做:
str = b.ToString();
甚至完全切断了中间人:
Console.WriteLine(b);
答案 2 :(得分:4)
三元运算符不允许语句切换,只允许值切换。你想这样做:
str= b ? "true" : "false"
(显然b.ToString()
)是解决此特定问题的更好解决方案,但我假设这只是一个示例。)
答案 3 :(得分:2)
答案 4 :(得分:1)
str = (b) ? "true" : "false";
答案 5 :(得分:0)
三元运算符不能是C#中语句的顶级,因为C#要求顶级表达式具有副作用。
答案 6 :(得分:-1)
出于好奇,为什么不这样做:
bool b = true;
string str = b.ToString();
在.NET中,当调用.ToString()时,值类型会自动将其值转换为字符串...包括布尔值。