[英]Compiler error using C# conditional operator
我似乎无法在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人给出了正确的答案,哈哈,所以我将奖励授予它的第一个人。
有趣的语法,我想我实际上比c ++语法更喜欢它。
我这样做的实际代码是:
ftp.ConnectMode = job.FTPUsePassiveMode ? FTPConnectMode.PASV : FTPConnectMode.ACTIVE;
您的代码应为:
str = b ? "true" : "false";
但是,这类似于只调用b.ToString().ToLower()
。 就是说,我怀疑您的实际用例比将布尔值转换为字符串还要复杂。
更新资料
如注释中所示, 条件运算符返回一个值; 它不像if
/ else
那样用于控制流。
str = b ? "true" : "false";
但是您可以这样做:
str = b.ToString();
甚至完全切掉中间人:
Console.WriteLine(b);
三元运算符不允许语句切换,仅允许值切换。 您想这样做:
str= b ? "true" : "false"
(显然b.ToString()
)是解决此特定问题的更好解决方案,但我假设这只是一个示例)。
其他人说的话,以及: http : //msdn.microsoft.com/en-us/library/ty67wk28.aspx
str = (b) ? "true" : "false";
三元运算符不能是C#中语句的顶层,因为C#要求顶层表达式具有副作用。
出于好奇,为什么不这样做:
bool b = true;
string str = b.ToString();
在.NET中,值类型在调用.ToString()时会自动将其值转换为字符串,包括布尔值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.