C#11:原始字符串

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#11:原始字符串相关的知识,希望对你有一定的参考价值。

这一直以来是我写代码的一个痛点,C#11终于解决了,那就是我想把一个整齐的格式的json字符串转出,但不能如愿,要不用一个三方库来搞定,要不就加各种双引号,如果有变量还得小心处理,因为在C#string类型中 @,$,",,都是有含义的,组合使用后就各种转义,补齐,C#11终于解决了这个痛点,使用方式如下:

环境要求:Visual Studio 17.2 Preview 3或.NET 7 Preview 3

创建控制台项目,目标框架选成.NET7.0,然后修改项目文件.csproj,增加两个节点,这样就能使用到C#11的功能。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <LangVersion>preview</LangVersion>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <LangVersion>preview</LangVersion>
  </PropertyGroup>
</Project>

代码主要通过$$"""开始原始字符串格式,用"""来结束原始字符串格式,中间的内容,可以原封不动的放上去,如果有外部变量,用原占位替换,整个字符串看起来很顺眼,找问题也很容易了。这里注意的一点是,$$是字符串格式的开始占位,下面的行不能超出$$,否则编译器报错。

//原始字符串
var firstName = "桂";
var lastName = "素伟";
var json =
    $$"""
    
         "firstName": "firstName",
         "lastName": "lastName",
         "sex": "male",
         "age": 15         
     
    """;
Console.WriteLine(json);


var xml=
    $$"""
    <?xml version="1.0"?>
    <Person>
      <FirstName>firstName</FirstName>
      <LastName>lastName</LastName>
      <Sex>male</Sex>
      <Age>15</Age>
    </Person>
    """;
Console.WriteLine(xml);

以上是关于C#11:原始字符串的主要内容,如果未能解决你的问题,请参考以下文章

[C++11]字符串原始字面量

C#11:原始字符串

C++11:atomic::compare_exchange_weak 支持非原始类型吗?

如何在 VIsual C++ 2010 中实现 C++ 原始字符串文字?

如何在 GCC 4.5 中使用 C++0x 原始字符串?

C# 11 新特性:原始字符串