2022-12-07
我们很高兴地宣布 C# 11 已经发布!与往常一样,C# 开辟了一些全新的领域,同时推进了过去版本中一直在运行的几个主题。我们的文档页面上的 C# 11 的新增功能下有许多功能和详细信息,这些内容都得到了很好的介绍。
随着每个版本的发布,社区的参与度越来越高,他们贡献了从建议、见解和 bug 报告一直到整个功能实现的所有内容。这真的是每个人的C#。谢谢!
默认情况下,C# 字符串被硬编码为 UTF-16,而互联网上流行的字符串编码是 UTF-8。为了最大限度地减少转换的麻烦和性能开销,您现在只需将 u8 后缀附加到字符串文字即可立即将它们转换为 UTF-8:
var u8 = "This is a UTF-8 string!"u8;
UTF-8 字符串文字简单地返回一个字节块——以 ReadOnlySpan<byte> 的形式。对于 UTF-8 编码很重要的场景,这可能比某些专用的新 UTF-8 字符串类型更有用。
字符串文字中的很多内容都是某种“代码”——不仅是程序文本,还有 JSON 和 XML 数据、HTML、正则表达式、SQL 查询等。当有许多特殊字符在 C# 字符串文字中具有特殊含义时,问题就会显现!值得注意的例子包括 \ 和 ",它们由 { 和 } 连接到内插字符串中。
为什么不采用一种完全没有转义字符的字符串文字形式呢?这就是原始字符串文字。
原始字符串文字至少由三个双引号分隔:
var raw1 = """This\is\all "content"!"""; Console.WriteLine(raw1);
This prints:
This\is\all "content"!
如果您需要三个或更多的“作为内容的一部分,您只需在外部使用更多的”。开头和结尾必须匹配:
var raw2 = """""I can do ", "", """ or even """" double quotes!""""";
var raw3 = """ <element attr="content"> <body> This line is indented by 4 spaces. </body> </element> """; // ^white space left of here is removed
由于右引号左侧有四个空格,因此从每行内容的开头删除四个空格,导致以下输出:
<element attr="content"> <body> This line is indented by 4 spaces. </body> </element>
摘自:
https://blog.csdn.net/helendemeng/article/details/128197262