.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.56Thread.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新特性试用>系列文章已经写了20多篇,而今天终于要告一段落了. 如果你还没有看过,详细文章列表在这里: .NET 6新特性试用系列 在这么多特性中,我最喜欢如 ...
- 5.0 新特性试用体验之 Clustered Index
作者:hzc989 原文来源: https://tidb.net/blog/69dd056c [是否原创]是 [首发渠道]TiDB 社区 [目录] 一.引言 二.基础前情回顾 三.era withou ...
- .NET 6新特性试用 | 可空引用类型
前言 在查看<隐式using指令>功能时,我们在csproj中发现这样一个属性: 那么,Nullable到底是干嘛的? 可为空上下文 严格来说,这不是新特性,而是C# 8.0引入的特性之一 ...
- C++11新特性探索:原始字符串字面值(raw string literal)
原始字符串字面值(raw string literal)是C++11引入的新特性. 原始字符串简单来说,"原生的.不加处理的",字符表示的就是自己(所见即所得),引号.斜杠无需 & ...
- .NET 6新特性试用 | ArgumentNullException卫语句
前言 在前面的文章中(<可空引用类型>),我们介绍过编译器会帮我们检查空引用,但是仅仅是警告.最好的方式还是在运行时用卫语句进行检查: private void Test(WeatherF ...
- .NET 6新特性试用 | PeriodicTimer
前言 在.NET中,已经存在了5个Timer类: System.Threading.Timer System.Timers.Timer System.Web.UI.Timer System.Windo ...
- .NET 6新特性试用 | 可写JSON DOM API
前言 我们常用JSON的方式,是将类对象序列化/反序列化: var user = new User { Name = "My IO" }; var json = JsonSeria ...
- .NET 6新特性试用 | SDK工作负载
前言 为了应对.NET SDK能够支持的程序集项目(例如iOS.Android.WASM)的不断增长,从.NET 6开始,允许用户仅安装必要的SDK(例如ASP.NET Core),而不是一次性安装& ...
- .NET 6新特性试用 | 自动生成高性能日志记录代码
前言 要想记录日志,常用的方式是访问ILogger实例提供的日志记录方法: private readonly ILogger<WeatherForecastController> _log ...
最新文章
- 6 redhat 查看rtc时间_修改linux系统时间、rtc时间以及时间同步
- c#精彩编程200例百度云_邂逅百度云智学院:福州理工学院AIOT实训营火热开营!...
- java数据结构系列——排列(2):有序阵列
- Gartner 容器报告:阿里云与 AWS 并列第一,领先微软、谷歌
- bbs与BLOG与SNS在区别
- c++函数可变参数的使用
- RESTful 使用规范及接口文档模板
- 维修频谱分析仪多少钱?简单告诉你,频谱分析仪维修实例报价
- Altium designer—各类USB封装大全
- Android虚拟机多开检测
- Linux 摄像头驱动
- 怎么注册免费苹果开发者账号?
- excel打不开html格式的文件,excel扩展名,教您解决Excel无法打开文件因为文件或文件扩展名无效...
- 产品隐私政策与使用条款
- 安全认证、准入控制、RBAC
- html5 video首次观看禁止快进,Video Speed Controller - 快进/后退/回看在线视频
- squirrelSql小松鼠数据库连接工具的安装以及连接informix(系列3,squirrelSql作为客户端连接)
- 【英文语法】英语是世界上最容易的语言(语法汇总)
- 基于51单片机的光照强度检测c语言程序,基于51单片机光照强度检测报告.doc
- SpringAop动态代理的两种实现方式
热门文章
- paip.C#.NET JSON解析总结
- 18秋学期《计算机网络》在线作业,18秋北交《计算机应用基础及计算机网络与应用》在线作业一-2辅导资料.docx...
- spring 加载java类_在Spring中基于Java类进行配置的完整步骤
- 无法检查指定的位置是否位于cfs上_(干货分享)一文搞明白 节气门位置传感器的作用、故障类型与症状、诊断方法...
- 行内元素中去掉文字的上下间距,使得文字所在元素的高度同字体高度一致的方法...
- win7 32位 安装opencv-python后,运行时提示 from .cv2 import *: DLL load failed: 找不到指定的模块 的解决办法...
- 寻找kernel32.dll的地址
- Tabcontrol动态添加TabPage(获取或设置当前选项卡及其属性)
- JavaScript基础学习(七)—BOM
- 关于castle和Could not find the dialect in the configuration错误