少用 string.Format
时间:2022-07-24
本文章向大家介绍少用 string.Format,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
如果你使用的是 C# 6.0 及其以上版本的话我建议你使用新增的 内插字符串 这个功能。这个功能可以更好的帮助开发人员设置字符串格式。下面我们就来看一下为什么要少用 string.Format 而要多用内插字符串,以及内插字符串的优缺点。 String.Format 在 C# 6.0 以前我们会经常用到这个,优点在这里我就不一一阐述了,这里我们主要说一下它的缺点。
- 开发人员必须对生成的字符串进行测试和验证,才能发现其中出现的问题;
- 替换操作是根据格式字符串中序号来完成的,但是编译器并不会验证格式字符串待替换序号数量和参数的个数是否相等,因此在程序运行时就会报错,提示参数个数与待替换序号数量不匹配;
- 参数顺序需要和待替换序号的顺序一致,但是开发人员不太容易看出参数顺序是否和待替换序号的顺序是否一致; 上述三种问题在出现后虽然可以修复,但是会花费一定的时间来解决,因此在 C# 6.0 及其以上版本中我们可以使用内插字符串来替代 String tring 。内插字符串可以让我们写出易于阅读的代码,编译器也可以用它实现完备的静态类型检查机制,进而降低出错的机率,并且它还提供了丰富的语法是我们可以使用合适的方法来生成字符串。下面我们就来看一下内插字符串。
零、内插字符串
1.语法 内插字符串的语法很简单,只需要在字符串前面加上 $ ,然后把表达式写在字符串中的 {} 之间即可。例如:
Console.WriteLine($"喵叔教你写优秀的 {Language} 代码!");
2.讲解 这种形式的代码方便了开发人员阅读也很容易验证字符串是否符合预期,并且因为表达式都写在了字符串中,因此避免了参数数量和待替换部分数量不匹配的问题。字符串的内插机制是通过库代码来实现的,这与 String.Format 方法类似,在必要的时候该机制会把变量从其他类型转换为 string 类型,例如:
Console.WriteLine($"我有 {number} 辆车");
Console.WriteLine($"我有 {number.ToString()} 辆车");
Console.WriteLine($"圆周率 {Math.PI:F2} ");
Console.WriteLine($"我今年 {age} 岁,是 {(age>=18?"成年人":"未成年人")}");
Console.WriteLine($"我的名字叫 :{user?.Name??"名字丢失"}");
var message = $@"您当前注册的手机号有:{phones.Select(p=>$@"{p.ToString()}").Aggregate((c,a)=>$@"{c}{Environment.NewLine}{a}")}"
- Python文学化编程 - Jupyter notebook使用和插件拓展
- PoisonCake(毒蛋糕):内置于手机ROM的恶意代码模块
- Spring+SpringMVC+MyBatis整合
- Python之numpy数组学习(五)——广播
- WordPress再悲剧:WPcache-Blogger感染事件影响五万WordPress网站
- 浅谈神经机器翻译
- 窃取Facebook用户信息:利用Android同源策略漏洞的恶意应用被发现
- 关于React Native 安卓首屏白屏优化
- 浅谈spring security 403机制一、无权限访问二、匿名访问三、有权限访问原因机制指定AccessDeniedHandler指定error-page情景原因结论
- Python之numpy数组学习(二)
- Intent 属性详解(上)
- 复仇行动:Notepad++官网被圣战组织黑了
- 四大组件的纽带——Intent
- 利用HTC One漏洞破解手机PIN密码
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 无聊的MISC题解
- MISC-convert | 旋转跳跃
- MISC-多彩
- Web-高明的黑客
- CVE-2017-7529 Nginx整数溢出漏洞分析
- 【Vulnhub】pegasus
- 2019-11-20-app专项测试【Android电量】Battery Historian耗电分析
- CVE-2017-7529 Nginx整数溢出漏洞分析2
- Redis find hot key 牛X!
- Python加水印
- 自动化运维实践 | Ansible变量
- Python-SSH日志审计
- 因 Redis 分布式锁造成的 P0 级重大事故,整个项目组被扣了绩效。。。
- Python-SSH日志分析
- 小记一次验证码绕过