.NET 6新特性试用 | 常量内插字符串

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET 6新特性试用 | 常量内插字符串相关的知识,希望对你有一定的参考价值。

前言

编写代码时,我们常常需要组合字符串。如下代码:

string scheme = "https";
string host = "xxx.com";
int port = 8080;

Console.WriteLine(string.Format("0://1:2", scheme, host, port));

但是,这种替换方式容易会产生错误,比如写错参数顺序,索引数字无效等。

因此,推荐的写法是使用字符串内插,代码如下:

Console.WriteLine($"scheme://host:port");

这样更容易阅读,而变量的值会被直接替换到字符串中。

常量内插字符串

当所有字符串都是常量时,在.NET 6之前,是不能使用字符串内插的,只是使用+拼接字符串:

而在.NET 6,我们已经可以对常量使用内插字符串,代码如下:

const string FirstName = "My";
const string LastName = "IO";

const string FullName = $"FirstName LastName";

需要注意的是,内插字符串中的常量不能是数字:

这是因为,数字常量转换为字符串是有区域性区分的,而区域性只有在运行时才能获得:

Console.WriteLine($"1234.56"); // output: 1234.56

Thread.CurrentThread.CurrentCulture= new CultureInfo("es-ES");
Console.WriteLine($"1234.56"); // output: 1234,56

结论

对于Attribute使用参数时,常量内插字符串将非常方便,如下代码:

public class xxClass

    [Obsolete($"Use nameof(NewMethod) instead")]
    public void OldMethod()  

    public void NewMethod()  

这样,我们可以不用在Message中硬编码方法名称了。

如果你觉得这篇文章对你有所启发,请帮忙点个或者在看

以上是关于.NET 6新特性试用 | 常量内插字符串的主要内容,如果未能解决你的问题,请参考以下文章

.NET 6新特性试用 | 总结:我最喜欢的5个特性

.NET 6新特性试用 | 自动生成高性能日志记录代码

.NET 6新特性试用 | 文件范围的命名空间

.NET 6新特性试用 可写JSON DOM API

.NET 6新特性试用 | System.Text.Json序列化代码自动生成

.NET 6新特性试用 | TryGetNonEnumeratedCount