C# - 为啥我不能在字符串中使用三元运算符? [复制]

Posted

技术标签:

【中文标题】C# - 为啥我不能在字符串中使用三元运算符? [复制]【英文标题】:C# - Why can't I use ternary operation inside string? [duplicate]C# - 为什么我不能在字符串中使用三元运算符? [复制] 【发布时间】:2017-09-06 18:43:33 【问题描述】:

我正在努力写作

$"This is  awesomeEnough ? "awesome" : "not awesome""

但我收到编译器错误

CS1003 语法错误,应为“:”

是预期的行为还是错误?

【问题讨论】:

: 将表达式与插值字符串中的格式分隔开来,因此您必须通过将表达式放在括号 $"This is (awesomeEnough ? "awesome" : "not awesome")" 内来强制它不认为它是分隔符 【参考方案1】:

操作员优先级。括号应该可以解决问题

$"This is  (awesomeEnough ? "awesome" : "not awesome") "

【讨论】:

正要说这个,好解决! 原因不是运算符优先级 - 只是冒号被解释为格式说明符的分隔符

以上是关于C# - 为啥我不能在字符串中使用三元运算符? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

三元运算符中为啥不能使用braced-init-list?

为啥使用三元运算符返回字符串与在等效 if/else 块中返回的代码有很大不同?

为啥我不能在字符串前使用@$ 前缀?

为啥三元条件不适用于字符串连接

您可以在 C# 本地函数中使用三元运算符吗?

在 C# 中创建元组时编译错误,没有括号包围三元运算符