C# 11,原始字符串文字 - 行不以与结束行相同的空格开始

问题描述 投票:0回答:2

尝试使用新引入的 C# 11 功能原始字符串文字,如您在以下示例中所见:

_logger.LogCritical($"""
    
new value: {value}
computed new value :   {value / 100}
old value:  {UwpMediaPlayer.Volume}
    
 """);

导致以下错误:

行不以与结束行相同的空格开始 原始字符串文字

我的目标是弄清楚应该如何使用这个功能以及我目前编写的代码有什么问题。

感谢您花时间阅读本文并感谢您提供的任何帮助。

c# string string-literals c#-11.0
2个回答
1
投票

我可以通过改变从

来编译
_logger.LogCritical($"""
    
new value: {value}
computed new value :   {value / 100}
old value:  {UwpMediaPlayer.Volume}
    
 """)

_logger.LogCritical($"""
    
new value: {value}
computed new value :   {value / 100}
old value:  {UwpMediaPlayer.Volume}
    
""").

我刚刚在关闭之前删除了空格

"""
.


1
投票

C# 11 原始字符串有一些使用此功能的规则,以下是我们需要遵循的规则:-

  1. 间距非常重要,开始和结束 3 个双引号应该在同一水平/空间开始和结束请找到下图以获得更好的可见性。

  1. 结束 3 个双引号将是非法的/如果您尝试在开始 3 个双引号之前结束引号将引发错误

  1. 但是,您仍然可以在同一个空格前结束 3 个双引号,C# 11 编译器仍然会很高兴。

  1. 内容不能马上结束

总结:

C# 11 string Literal 是一个非常嫉妒的家伙,它看不到任何人超越他。如果有人留在他身后或处于同一水平,他会很高兴,但如果有人试图成长/超越他,他就会开始哭泣。

我已经详细制作了这个视频,如果我的文字仍然没有意义。请随时观看视频,我已经介绍了在使用 C# 11 字符串文字时我们应该了解的所有规则和概念。

https://youtu.be/itr3e6KkR0I

© www.soinside.com 2019 - 2024. All rights reserved.