『 再看.NET7』string的进化

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了『 再看.NET7』string的进化相关的知识,希望对你有一定的参考价值。

string是开发过程中,使用频度最高的类型之一,所以在构建类型时作了很多处理,如“不可变性”,“保留性”等特点。

string的常量是在""引号中进行赋值的。

var str1 = "这是一段文字";
Console.WriteLine(str1);

之后,为了字符串的格式化,引入了$""定义方式,这样就可以在字符串中用来标注格式化的内容了。

var str2 = $"时间:DateTime.Now";
Console.WriteLine(str2);
//输出结果是:时间:1/6/2023 15:37:13


var str2_1 = $"时间:DateTime.Now:yyyy-MM-dd";
Console.WriteLine(str2_1);
//输出结果是:时间:2023-01-06

为了解决字符串内容的换行,引定入@"",来定义有换行的字符串,比如下面的一条SQL查询,可以按格式化后的样式来定义。$和@可以混用,不分先后。

var str3 = @"SELECT ID
,Question
,Score
,QuestionTypeID
,SubjectTypeID
FROM Questions";
Console.WriteLine(str3);


var str3_1 = @$"SELECT ID
,Question
,Score
,QuestionTypeID
,SubjectTypeID
FROM Questions WHERE Score>10";
Console.WriteLine(str3_1);

关于上面的写法,一个java的哥们还吐过槽,因为不整齐,字段应该和SELECT对齐,如果做过,只能手动补空格或tab了,但慈禧太后到DB上的也是有这些空格的,不完美。于是,C#11中安排了这个功能。用""" """来定义原始字符串,这样看上去就要清晰一些了。

var str4 = """
           SELECT ID
           ,Question
           ,Score
           ,QuestionTypeID
           ,SubjectTypeID
           FROM Questions
           """;
Console.WriteLine(str4);


var str4_1 = $"""
           SELECT ID
           ,Question
           ,Score
           ,QuestionTypeID
           ,SubjectTypeID
           FROM Questions
           WHERE Score>10
           """;
Console.WriteLine(str4_1);

其实原始字符串还解决了一个问题,就是字符串中有"的问题,以前需要有转义字符来实现,现在原始字符串都搞定了。

Console.WriteLine("\\"a\\" 是小写的");//通过\\来转义
Console.WriteLine(@"""a"" 是小写的");//前缀是@时,通f这"转义

最佳demo是json字符串的定义,用原始字符串的方式定义json字符串,最合适不过了。

var jsonString = """
                 
                     "irstName": "John",
                     "astName": "Smith",
                     "ex": "male",
                     "ge": 25,
                     "ddress": 
                     
                         "treetAddress": "21 2nd Street",
                         "ity": "New York",
                         "tate": "NY",
                         "ostalCode": "10021"
                                         
                  
                 """;
Console.WriteLine(jsonString)

由于公众号排版问题可能不明显,切个图吧。通过下图,看到的json原始字符串够原始了吧,一目了然。

以上是关于『 再看.NET7』string的进化的主要内容,如果未能解决你的问题,请参考以下文章

『 再看.NET7』让json序列化体现多态

『 再看.NET7』泛性特性使用场景

『 再看.NET7』是否数值类型

『 再看.NET7』看看required属性有什么不同

『 再看.NET7』新的访问修饰符——file

单词频度统计java