C# 中 “$” 符号的作用以及用法详解
作者:不染-何程龙 发布时间:2022-09-11 17:03:50
前言:$
是c# 6.0 的语言特性,功能类似string.format()
,更方便的地方在于不要像format
一样使用索引,可以直接使用变量、表达式或者方法的执行。
一、C#中$
的作用
谈及这个$
,其实它是C#6.0语法中模板字符串的一种写法,什么是模版字符串?还记得你们用过的格式化字符串吗?string.Format()
这个方法,是最常用的方法之一。
那$
又是什么呢?它是为了替代string.format()
的,原先赋值需要占位符和变量,当需要拼接多个变量会造成语句过长等不易理解问题。
$
是为了替代string.format()
,可以把字符串中的C#变量{}
包含起来达到识别C#变量的目的$"{id}"
;也支持表达式,使用$"{(你的表达式)}"
;或者方法的执行,使用$"{(方法)}"
。
二、C#中$
的用法
C# 中$
符号的作用是C#6.0中新出现的一个特性,也即是字符串的拼接优化。
语法格式:$"string {参数}"
解释:以$
符号开头开始字符串,其中以{}
来进行传参,可以多个参数累加。
例如:var results = $"Hello {Name}";
三、关于$
的示例讲解
var str = string.Format("我的名字叫{1},我今年{1}岁。", "张三", 23);
Console.WriteLine(str);
这是我们使用string.format()
的写法,下来我们使用$
改写一下。
var str = $"我的名字叫{"张三"},我今年{23}岁。";
Console.WriteLine(str);
通过上面这个案例,我们发现,现在使用$
代码简洁,可读性强。
可能有些朋友觉得效果不太明显,那么请看下面这个案例:
var name = "张三";
var age = 23;
var sex = "男";
var message = string.Format("我叫{0},我的年龄为{1},我的性别是{2}", name, age, sex);
var show = $"我叫{name},我的年龄为{age},我的性别是{sex}";
Console.WriteLine(message);
Console.WriteLine(show);
如果还感受不到,那么请你试想一下:如果我们要操作的数据很多,假设它是一个多条的SQL语句,那么在长篇字符串中定位索引,那是不是很累啊!纵使你写对了索引(没写对还得一个个检查、修改),好不容易完工了。但下一个需求让你加两个参数,你的索引位置又得变,还得在万码丛中查找你原来索引在哪里的,是不是很恶心?
哈哈,不用沮丧,此时C#6.0模版字符串就可以闪亮登场啦!
怎么用?总结一下,就是在字符串的双引号前面加一个 $ 符号,在需要使用变量的地方用{变量}就可以了。这个在我们上面的案例中,也有体现。
四、关于$
的补充知识
正如我们上面所说,{变量}
表示在字符串中输出变量的值,当然{}
中间也可以是一个表达式或者方法的执行。
$"我的姓名是{GetName()}";
$"name的类型是{name.GetType()}";
如上,这样就很方便,帅气了!那么变量和索引可以混用吗?当然也是可以的,如下:
var name = "张三";
var age = 23;
var sex = "男";
var show = string.Format($"我是{name},今年{age},家住在{{0}}", sex);
Console.WriteLine(show);
要注意的是需要用两次大括号
{{}}
将索引包含起来,也就是这样的形式,{{索引}}
。因为一次是输出表达式,两次就转义成普通的占位符了,这点一定要注意!
来源:https://blog.csdn.net/qq_44034384/article/details/106657720


猜你喜欢
- 遇到的问题解决方法win7:insert键切回win10:fn+insert切回Mac:fn+i 切回来源:https://blog.csd
- 本文实例源自一个项目,其中需要调用本机的摄像头进行拍照,分享给大家供大家参考之用。具体步骤如下:硬件环境:联想C360一体机,自带摄像头编写
- 本文实例讲述了Android实现整理PackageManager获取所有安装程序信息的方法。分享给大家供大家参考,具体如下:List<
- 介绍今天上班的时候有个哥们问我怎么去实现一个按钮式的进度条,先来看看他需要实现的效果图。和普通的圆形进度条类似,只是中间的地方有两个状态表示
- 调用native 方法来开启和关闭vibrator: native static void vibratorOn(long millisec
- 1.首先在 build.gradle 里导入包implementation 'com.github.PhilJay:MPAndroi
- 前言我们经常会被问到这么一个问题:SpringBoot相对于spring有哪些优势呢?其中有一条答案就是SpringBoot自动注入。那么自
- 本文介绍如何通过C#程序代码方法将XML文件转换为Word文档,包括转为.doc /.docx等格式。并附VB.NET代码,有需要可供参考。
- 本文实例讲述了C# TreeView无限目录树实现方法。分享给大家供大家参考,具体如下:#region 绑定客户树protected voi
- 一般的接口实现多态定义接口 interface Ipeople { void say(); }定义实现的类 public cla
- 关于为什么需要创建单例?这里不过多介绍,具体百度知。 关于C# 创建单例步骤或条件吧1、声明静态变量;2、私有构造函
- 微信跳一跳辅助的Java具体实现代码,供大家参考,具体内容如下1.参考知乎教你用Python来玩微信跳一跳,鉴于本人Python一直都是半吊
- 前言我们之前学的单链表,默认只能从链表的头部遍历到链表的尾部,在实际中应用太少见,太局限;而双向链表,对于该链表中的任意节点,既可以通过该节
- java控制台输入有如下几个方法1、JDK 1.4 及以下版本读取的方法JDK 1.4 及以下的版本中要想从控制台中输入数据只有一种办法,即
- 模糊查询Spring Data Jpa的使用可以减少开发者对sql语句的编写,甚至完全不需要编写sql语句。但是,开发过程中总会遇到各种复杂
- 现在很多电脑提供了蓝牙支持,很多笔记本网卡也集成了蓝牙功能,也可以采用USB蓝牙方便的连接手机等蓝牙设备进行通信。操作蓝牙要使用类库InTh
- Android 滑动监听的实例详解摘要: ScollBy,ScollTo是对内容的移动,view.ScollyBy是对view的内容的移动&
- 1.前提已经配置Sleuth,可参考2.什么是Zipkin?官网:https://zipkin.io/大规模分布式系统的APM工具( App
- 在写程序的时候,有时候可能需要设置小数的位数,那么java中有哪几种保留小数位数的方法呢?本文以两位小数为例给出四种方法。package C
- 任何一个类都是Class类的实例对象,这个实例对象有三种表示方式第一种表示方式(任何一个类都有一个隐含的静态成员变量class):Class