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

Raf*_*nig 1 c# string string-literals c#-11.0

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

_logger.LogCritical($"""
    
new value: {value}
computed new value :   {value / 100}
old value:  {UwpMediaPlayer.Volume}
    
 """);
Run Code Online (Sandbox Code Playgroud)

导致以下错误:

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

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

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

Par*_*een 5

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

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

在此输入图像描述

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

在此输入图像描述

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

在此输入图像描述

  1. 内容结束后无法立即结束

在此输入图像描述

概括 :

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

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

https://youtu.be/itr3e6KkR0I