C#中字符串插值内的字符串插值导致编译器错误[重复]

Posted

技术标签:

【中文标题】C#中字符串插值内的字符串插值导致编译器错误[重复]【英文标题】:String Interpolation inside String Interpolation in C# results in compiler error [duplicate] 【发布时间】:2017-06-05 08:58:52 【问题描述】:

以下 C# 表达式导致我的程序出现编译器错误:

$"Getting image from location.IsLatitudeLongitude ? $"location.Latitude - location.Longitude" : location.Location."

不应该像那样使用字符串插值吗?还是不能这样做?

【问题讨论】:

在字符串插值中使用三元运算符有点棘手:我认为您必须添加圆括号。 【参考方案1】:

我刚刚测试了这个。正如我所评论的,您需要为 Tenery 运算符使用大括号:

$"Getting image from (location.IsLatitudeLongitude ? $"location.Latitude - location.Longitude" : location.Location)."

【讨论】:

【参考方案2】:

根据documentation,在字符串插值中使用三元运算符时需要使用以下格式。

内插字符串的结构如下:

$ " <interpolation-expression> <optional-comma-field-width> <optional-colon-format> "

因此,您需要在 之后和结束 之前添加一组括号,如下所示:

$"Getting image from (location.IsLatitudeLongitude ? $"location.Latitude - location.Longitude" : location.Location)."

【讨论】:

以上是关于C#中字符串插值内的字符串插值导致编译器错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

对 C# 6.0 中的字符串插值感到困惑 [重复]

在格式化字符串(又名插值字符串)中使用三元运算符时出错 [重复]

多行 C# 插值字符串文字

字符串插值在单词周围添加引号[重复]

在 C# 6 中声明使用字符串插值的长字符串

在 ruby​​ 中编写条件的正确格式,然后使用 HAML 标记内的字符串插值将输出转换为字符串