C#11预览:允许在内插字符串的“插值表达式”中换行

C#11预览:允许在内插字符串的“插值表达式”中换行
内插字符串(interpolated strings)是 C# 6.0 引入的语法,它允许在字符串中插入表达式。C# 的内插字符串分为非逐字和逐字内插字符串(分别是 $"" 和 $@"")两种。两者最大的区别是:非逐字内插字符串与普通字符串一样,不能在字符串文本中包含换行符,必须使用转义符(如\r \n)。相反,逐字插值字符串可以在其文本段中包含换行符,并且不会转义换行符或其他字符。.
但是,非逐字插值字符串中的“换行符限制”,从字符串文本扩散到了文本之外的 插值表达式 ,这导致了很多不必要的限制。比如在 C# 11 之前,下面这段代码编译起来会报错:
var v = $"Count is\t: { this.Is.A.Really()
                            .That.I.Should(
                                be + able)[
                                    to.Wrap()] }.";
但在 C# 11 预览版中,它是合法的,可以正常编译。