本文迁移自Panda666原博客,原发布时间:2021年4月17日。

在英文中,$符号表示美元符号(United States dollar)。这也是很多人喜欢的东西。甚至是一生最求的东西。但在编程语言中他只是一个符号。

在PHP中,$符号用于定义变量。比如:

$website = "www.Panda666.com";

在jQuery中,$就是jQuery的别称,是jQuery库提供的一个回传函数,比如:

var ul = $('ul');

在C#中,在第6.0版出现的一个新特性,称作:string interpolation。它有什么好处呢?我们来看几个案例就明白了。通常我们拼接字符串可能这样:

string name = "Panda";
string website = "www.panda.com";
string result = "Name=" + name + " Website=" + website;
Console.WriteLine(result);
//输出:Name=Panda Website=www.panda.com

拼接字符串实在太麻烦了,尤其是混合单双引号的情况下。这段代码优化后可能会是这样:

string name = "Panda";
string website = "www.panda.com";
string result = String.Format("Name={0} Website={1}", name, website);
Console.WriteLine(result);
//输出:Name=Panda Website=www.panda.com

欸,看起来有点C语言的味道了,只不过用的是占位符。这种方式已经不错了,但在参数特别多的情况下,还是非常麻烦,另外如果要和表达式结合在一起使用会更加麻烦。为此C#更新版本后,出了一个string interpolation 的语法糖。怎么用呢,让我们把上面的例子再简化一下你就明白了。

string name = "Panda";
string website = "www.panda.com";
string result = $"Name={name} Website={website}";
Console.WriteLine(result);
//输出:Name=Panda Website=www.panda.com

可以看到只修改了result变量定义和实例化这一行。在字符串的起始位置加了一个$符号,然后把变量放在原先占位符的位置就可以了。这样有什么好处?当你在定义一大串的字符串内嵌很多变量的时候,不仅仅是美观,而且日后的维护也非常的方便。并且如果和LINQ结合使用会更加的方便。比如下面这个例子:

//定义测试使用的数据
var testData = new[]{
new {Name="Panda",Website="Panda666.com" },
new {Name="Dog",Website="222dog.com"}
}; //直接在LINQ中使用(注意:需要引入System.Linq命名空间哟)
var doMagic2 = from item in testData
select $"Name={item.Name.ToUpper()} Website={item.Website.Trim()}";
//测试输出的结果
foreach (string item in doMagic2){
Console.WriteLine(item);
//输出:
//Name=PANDA Website=Panda666.com
//Name=DOG Website=222dog.com
}

看到这里可能会有小伙伴会问了,那我想格式化参数怎么办,之前可以直接在占位符后面设置格式化的参数,现在怎么办。实际上,现在也没有变化,仍然在“占位符”后加格式化参数即可。可以看这个例子:

Console.WriteLine($"{DateTime.Now:f}");
//2021年4月17日 15:13
Console.WriteLine($"{666666.67D:c}");
//¥666,666.67

string interpolation 大概就是这样。欢迎小伙伴们一起交流学习。可以在下方留言哟。

C#中的String Interpolation的更多相关文章

  1. JavaScript中的string interpolation

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals var a = 5; var b ...

  2. C# 6.0:String Interpolation

    在开发中经常需要对字符串进行格式化处理.我们一般使用String.Format()方法,它会将指定字符串中的每个格式项替换为相应对象的值的文本等效项.虽然这很普通,但有时会容易使人迷惑并造成错误.因为 ...

  3. java中的String

    String作为java最常用的类,被广大程序员们蹂躏已久,让我们又爱又恨,应该如何正确的使用它呢,老姜带你一起来揭开它神秘的面纱. 一.String类定义时被冠上了final的标识符,决定了它终生不 ...

  4. 再解java中的String

    今天看到一篇文章中,写了关于java中的String.我看了后,是我从学java来觉得是最好的一篇关于String类的文章.看了这篇文章你就会对String的认识会提高一个层次.故将原作者的文章特意转 ...

  5. 标准C++中的string类的用法总结

    标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...

  6. 探秘Java中的String、StringBuilder以及StringBuffer

    探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问 到的地方,今天就来和大家一起学习 ...

  7. php示例代码之类似于C#中的String.Format方法

    php示例代码之类似于C#中的String.Format方法 原文来自于  http://stackoverflow.com/questions/1241177/c-string-format-equ ...

  8. (转)Java中的String为什么是不可变的

    转自:http://www.importnew.com/7440.html String是所有语言中最常用的一个类.我们知道在Java中,String是不可变的.final的.Java在运行时也保存了 ...

  9. 关于JAVA中的String的使用与连接(转)

    JAVA中的String连接性能 Java中的String是一个非常特殊的类,使它特殊的一个主要原因是:String是不可变的(immutable).           String的不可变性是Ja ...

随机推荐

  1. c++对c的拓展_常量引用

    常量引用:不能通过引用去修改引用所指向的内容 const int &ref =val; // const int  *const ref =&val; 注意:可引用常量 (普通引用无法 ...

  2. FreeRTOS+CubeMX编程实践

    一.关于FreeRTOS 1.什么是FreeRTOS? FreeRTOS是一个轻量级的操作系统.FreeRTOS提供的功能包括:任务管理.时间管理.信号量.消息队列.内存管理.记录功能等,可基本满足较 ...

  3. Codeforces Round #752 (Div. 2) A B C

    Problem - A - Codeforces Problem - B - Codeforces Problem - C - Codeforces A. Era 每个a[i] - i 表示的是当前a ...

  4. 2021.08.06 P3478 STA-Station(树形结构)

    2021.08.06 P3478 STA-Station(树形结构) [P3478 POI2008]STA-Station - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 给 ...

  5. 茴香豆的“茴”有四种写法,Python的格式化字符串也有

    茴香豆的"茴"有四种写法,Python的格式化字符串也有 茴香豆的"茴"有四种写法,Python的格式化字符串也有 被低估的断言 多一个逗号,少一点糟心事 上下 ...

  6. Java类型跟数据库类型的相互转换

    1.自定义一个转换类型,获取数据库数据并输出数据时,把数据库的Varchar类型转为java的String[]类型 前提(1) 定义一个类VarcharToStringsHandler继承BaseTy ...

  7. Mybatis Plus之内置Mapper实践

    MyBatis Plus,作为对MyBatis的进一步增强,大大简化了我们的开发流程,提高了开发速度 配置 由于Mybatis Plus是建立在Mybatis之上的,所以其已经依赖了Mybatis,故 ...

  8. 【Linux 网络编程】生动讲解 Reactor 模式与 Proactor 模式

    五种 I/O 模型 先花费点时间了解这几种 I/O 模型,有助于后面的理解. 阻塞 I/O 与非阻塞 I/O 阻塞和非阻塞的概念能应用于所有的文件描述符,而不仅仅是 socket.我们称阻塞的文件描述 ...

  9. 中间件漏洞之IIS

    IIS中间件漏洞 我们常见的中间件有IIS.Apache.Nginx,其中IIS中间件有什么漏洞呢? IIS 短文件名漏洞: 漏洞产生的原因是为了兼容MS-DOS程序,windows为文件名较长的文件 ...

  10. MySQL 的 EXPLAIN 语句及用法

    在MySQL中 DESCRIBE 和 EXPLAIN 语句是相同的意思.DESCRIBE 语句多用于获取表结构,而 EXPLAIN 语句用于获取查询执行计划(用于解释MySQL如何执行查询语句). 通 ...