• 深入理解C# 中 “$” 符号的作用以及用法


    前言:$是c# 6.0 的语言特性,功能类似string.format(),更方便的地方在于不要像format一样使用索引,可以直接使用变量、表达式或者方法的执行。
    文章目录
    一、C#中`$`的作用
    二、C#中`$`的用法
    三、关于`$`的示例讲解
    四、关于`$`的补充知识
    一、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);
    1
    2
    这是我们使用string.format()的写法,下来我们使用$改写一下。

    var str = $"我的名字叫{"张三"},我今年{23}岁。";
    Console.WriteLine(str);
    1
    2
    通过上面这个案例,我们发现,现在使用$代码简洁,可读性强。

    可能有些朋友觉得效果不太明显,那么请看下面这个案例:

    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);
    1
    2
    3
    4
    5
    6
    7

    如果还感受不到,那么请你试想一下:如果我们要操作的数据很多,假设它是一个多条的SQL语句,那么在长篇字符串中定位索引,那是不是很累啊!纵使你写对了索引(没写对还得一个个检查、修改),好不容易完工了。但下一个需求让你加两个参数,你的索引位置又得变,还得在万码丛中查找你原来索引在哪里的,是不是很恶心?

    哈哈,不用沮丧,此时C#6.0模版字符串就可以闪亮登场啦!

    怎么用?总结一下,就是在字符串的双引号前面加一个 $ 符号,在需要使用变量的地方用{变量}就可以了。这个在我们上面的案例中,也有体现。

    四、关于$的补充知识
    正如我们上面所说,{变量}表示在字符串中输出变量的值,当然{}中间也可以是一个表达式或者方法的执行。

    $"我的姓名是{GetName()}";
    $"name的类型是{name.GetType()}";
    1
    2
    如上,这样就很方便,帅气了!那么变量和索引可以混用吗?当然也是可以的,如下:

    var name = "张三";
    var age = 23;
    var sex = "男";
    var show = string.Format($"我是{name},今年{age},家住在{{0}}", sex);
    Console.WriteLine(show);
    1
    2
    3
    4
    5


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

    一份耕耘,一份收获,付出就有回报永不遭遇过失败,因我所碰到的都是暂时的挫折
  • 相关阅读:
    污点分析(taint analysis)综述 | 论文阅读 污点分析技术的原理和实践应用
    .NET中的泛型
    远控学习编写 gh0st
    OsmocomBB 摩托罗拉 c118 GSMSMS 嗅探
    CentOS8安装达梦数据库V8及使用方法
    CentOS8停止维护后,使用阿里源
    requests模块
    python 内存分析
    欧陆风云4此模组路径不可用
    C#中问号(?)用法总结
  • 原文地址:https://www.cnblogs.com/raincedar/p/14685942.html
Copyright © 2020-2023  润新知