本文迁移自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. 什么是机器学习的特征工程?【数据集特征抽取(字典,文本TF-Idf)、特征预处理(标准化,归一化)、特征降维(低方差,相关系数,PCA)】

    2.特征工程 2.1 数据集 2.1.1 可用数据集 Kaggle网址:https://www.kaggle.com/datasets UCI数据集网址: http://archive.ics.uci ...

  2. Machine Learning 学习笔记 01 Typora、配置OSS、导论

    Typora 安装与使用. Typora插件. OSS图床配置. 机器学习导论. 机器学习的基本思路. 机器学习实操的7个步骤

  3. php个人博客搭建第二阶段②

    网站正文部分:热门博客的推荐: html代码: <!-- 网站正文部分 -->     <div class="content">         < ...

  4. 关于5G技术,这是我见过最通俗易懂的讲解了

    公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ 1 一个简单且神奇的公式 今天的故事,从一个公式开始讲起. 这是一个既简单又神奇的公式.说它简单,是因为它一共只有 3 个字 ...

  5. clientWidth、offsetWidth、scrollWidth……

    1.元素视图属性 clientWidth:元素内容可视区宽度(水平方向 width + 左右 padding). clientHeight:元素内容可视高度(垂直方向 height + 上下paddi ...

  6. web框架的本质、MVC框架MTV框架的介绍

    1.web框架的本质 所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请 ...

  7. Mysql limit 优化优化

    MySql 性能到底能有多高?用了php半年多,真正如此深入的去思考这个问题还是从前天开始.有过痛苦有过绝望,到现在充满信心! MySql 这个数据库绝对是适合dba级的高手去玩的,一般做一点1万篇新 ...

  8. DDoS攻击--TCP攻击概述

    https://blog.csdn.net/qq_34777600/article/details/81945594

  9. python PDF转图片,World转PDF

    软件不用续费了... PDF转World暂时没需求,有需求了再搞 Python3.9 ---------------pip3 install  PyMuPdf ---------------pip3 ...

  10. 零基础学Java第一节(语法格式、数据类型)

    本篇文章是<零基础学Java>专栏的第一篇文章,从本篇文章开始,将会连更本专栏,带领大家将Java基础知识彻底学懂,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! ...