在 C# 中使用 插值字符串

 更新时间:2022年01月07日 10:43:39   作者:DotNetCore实战  
这篇文章主要介绍了在 C# 中使用 插值字符串,字符串插值是一种将 表达式 插入到字符串字面量中的一种技术,又称为变量替换,变量插值,变量展开 等等,它是一种用相应值替换字符串中的一个或者更多个占位符的处理过程

前言:

字符串插值是一种将 表达式 插入到字符串字面量中的一种技术,又称为变量替换,变量插值,变量展开 等等,它是一种用相应值替换字符串中的一个或者更多个占位符的处理过程。

字符串插值被很多编程语言所采用,比如说:PythonPerlPHP,Ruby,Java,Scala 等等, C# 是在第六个版本中引入的,这篇文章我们将会讨论如何在 C# 中使用 字符串插值。

1.字符串插值 的结构

从语言层面上来说,字符串插值就是一个包含插值表达式的string,这个string中的某一个插值最终都会被一个实际值所替代。

插值字符串是用 $ 开头的,此外  $ 和字符串字面量之间不能有任何空格,下面的语言展示了 插值表达式 的语法结构。

{<interpolationExpression>[,<alignment>][:<formatString>]}

注意方括号内的元素是可选的。interpolationExpression 元素表示生成结果或输出字符串的表达式。alignment 表示一个常量表达式,其值指定在计算表达式时必须包含在表达式结果的字符串表示形式中的最小字符数。如果值为正数,则字符串表示为右对齐;如果值为负数,则字符串表示为左对齐。formatString 顾名思义,表示一个格式字符串。

2.创建 字符串插值

当使用字符串插值时,必须首先在字符串之前插入一个 $ 字符,而不是单独为每一个元素单独格式化。

一个插值表达式必须包含在一个左大括号和一个右大括号内  ({})。下面的代码片段展示了如何使用字符串插值来将字符串替换为文本值。

var name = "Joydip";
Console.WriteLine($"Hello, {name}");

接下来考虑下面的代码段。 

string productName = "Lenovo Legion Laptop";
int counter = 5;
string output = string.Format("Today, {0} has been sold {1} times.",
                                               productName, counter);

当把代码运行起来后,output 内容输出如下:

Today, Lenovo Legion Laptop has been sold 5 times.

现在用 插值法 来改造一下,参考结果如下:

string productName = "Lenovo Legion Laptop";
int counter = 5;           
string output = $"Today, {productName}, has been sold {counter} times.";

3.插值字符串必须在编译时就能确定

插值字符串看起来像是一个创建 字符串模板 的简单方式,但你必须要意识到,插值字符串在 C# 中仅仅是一个编译时语法糖而已,换句话说,你的插值字符串必须在编译时就是一个普通的字符串字面量。

4.插件字符串中使用特殊字符

接下来我们来学习下,如何在 插值字符串 中使用特殊字符,考虑下面的例子。

string productName = "Lenovo Legion Laptop";
double price = 1600.00;
Console.WriteLine($"The customer asked, \"What is the price of {productName}?\"");
Console.WriteLine($"The salesman replied saying that the price of {productName} is ${price}.");

正如你看到的,如果包含特殊字符,必须用 \ 进行转义,字符串插值允许我们插入一个 value 到字符串中,并还能控制最后生成的输出结果,从语言层面来说,字符串插值最后会变成String.Format,相反,如果字符串插值是 IFormattable 或者 FormattableString 类型,那么编译器会调用 FormattableStringFactory.Create 方法。

理论上来说,字符串插值稍微降低了程序的性能,但 .NET 最近的几个版本已经做了很大的优化,同时 字符串插值 所带来的灵活性远超这个所谓的性能。

到此这篇关于在 C# 中使用 插值字符串的文章就介绍到这了,更多相关 C# 中使用 插值字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C# .NET及Mono跨平台实现原理解析

    C# .NET及Mono跨平台实现原理解析

    这篇文章主要介绍了C# .NET及Mono、跨平台实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • C#灰度化图像的实例代码

    C#灰度化图像的实例代码

    灰度化一幅图像就是将图像的色彩信息全部丢掉,将24位的位图信息,用8位来表示,灰度图共有256级灰度等级,也就是将24位位图的一点如(255,255,255)转换成255,所以R,G,B三个值所乘的系数和为1
    2013-09-09
  • C#实现多线程启动停止暂停继续的示例代码

    C#实现多线程启动停止暂停继续的示例代码

    本文主要介绍了C#实现多线程启动停止暂停继续的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • 使用VS2019生成C#应用安装包的方法步骤

    使用VS2019生成C#应用安装包的方法步骤

    本文主要介绍了使用VS2019生成C#应用安装包的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • C#生成DLL文件的方法

    C#生成DLL文件的方法

    这篇文章主要介绍了C#生成DLL文件的方法,较为详细的分析了使用C#生成DLL文件所涉及的相关技巧与实现方法,需要的朋友可以参考下
    2015-07-07
  • C#基础教程之IComparable用法,实现List<T>.sort()排序

    C#基础教程之IComparable用法,实现List<T>.sort()排序

    这篇文章主要介绍了C#的一些基础知识,主要是IComparable用法,实现List<T>.sort()排序,非常的实用,这里推荐给大家。
    2015-02-02
  • C# Page用于各页面继承功能实例

    C# Page用于各页面继承功能实例

    这篇文章主要介绍了C# Page用于各页面继承功能实例,包含了常见的页面视图、数据缓存、数据库操作等技巧,需要的朋友可以参考下
    2014-10-10
  • C#实现Nginx平滑加权轮询算法

    C#实现Nginx平滑加权轮询算法

    这篇文章主要为大家详细介绍了C#实现Nginx平滑加权轮询算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • C#精确计算年龄的方法分析

    C#精确计算年龄的方法分析

    这篇文章主要介绍了C#精确计算年龄的方法,实例分析了C#计算时间的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • C#使用IronPython调用Python

    C#使用IronPython调用Python

    这篇文章主要给大家介绍了关于C#使用IronPython调用Python的相关资料, c#利用IronPython调用python的过程中总会遇到种种问题,这里给大家总结下,需要的朋友可以参考下
    2023-07-07

最新评论