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);

C# 中 “$” 符号的作用以及用法详解

如果还感受不到,那么请你试想一下:如果我们要操作的数据很多,假设它是一个多条的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);

C# 中 “$” 符号的作用以及用法详解

要注意的是需要用两次大括号 {{}} 将索引包含起来,也就是这样的形式,{{索引}}。因为一次是输出表达式,两次就转义成普通的占位符了,这点一定要注意!

来源:https://blog.csdn.net/qq_44034384/article/details/106657720

标签:C#,$,符号
0
投稿

猜你喜欢

  • c#实现爬虫程序

    2023-04-19 18:59:14
  • C#简单爬虫案例分享

    2023-04-14 08:44:13
  • maven打包时候修改包名称带上git版本号和打包时间方式

    2022-03-09 20:51:39
  • java基础--自己动手实现一个LRU

    2023-06-25 18:21:04
  • SpringCloud Eureka服务注册中心应用入门详解

    2022-02-23 08:48:44
  • Android实现自动变换大小的ViewPager

    2023-03-19 06:56:15
  • SpringBoot项目部署到腾讯云的实现步骤

    2023-01-01 16:58:55
  • JavaWeb简单文件上传流程的实战记录

    2023-04-02 09:14:59
  • MyBatis注解式开发映射语句详解

    2023-06-07 20:31:23
  • 从 JVM 中深入探究 Synchronized作用及原理

    2023-07-28 17:22:33
  • Java中byte输出write到文件的实现方法讲解

    2023-12-25 11:11:36
  • Android如何让WebView中的HTML5页面实现视频全屏播放

    2023-07-29 00:32:06
  • C#开发微信公众号接口开发

    2023-10-14 11:49:01
  • SpringBoot中的yaml语法及静态资源访问问题

    2021-09-27 20:32:38
  • Java中try、catch的使用方法

    2021-11-08 00:48:12
  • C#多线程开发实战记录之线程基础

    2022-11-03 03:21:45
  • java中Class.getMethods()和Class.getDeclaredMethods()方法的区别

    2021-05-28 23:05:46
  • Java深入讲解二十三种设计模式之中的策略模式

    2022-11-25 13:23:15
  • spring mvc DispatcherServlet之前端控制器架构详解

    2023-07-30 16:53:23
  • Java异常分类及统一处理详解

    2022-01-27 12:32:24
  • asp之家 软件编程 m.aspxhome.com