FormattableString 取代特定区域字符串

简介: FormattableString 取代特定区域字符串

有些软件系统是针对全球来开发的,因此一些字符串需要根据不同地区不同语言做出特定的处理。如果针对不同地区不同用语言分别编写字符串处理方法的话代码量是巨大的。那么这个时候我们可以用到内插字符串深层的特性,C# 会把内插字符串的结果隐式的转换成 string 或者 FormattableString 。

例如下面这个例子,内插字符串的结果将是 string 类型:

string message = $"我的名字叫 {name} ";

下面这段代码内插字符串的结果将会被转换为 FormattableString 对象:

FormattableString message= $"我的名字叫 {name} ";

当我们声明隐式类型的局部变量,并将内插字符串的结果赋值给它时,实际上内插字符串的结果会隐式转换为 string 类型。编译器会根据应该输出的信息所具有的运行期类型来产生不同的程序码。用来创建字符串的程序码部分会根据执行该程序的计算机所在位置来生成该区域的字符串格式。开发人员也可以利用编译器类型判定机制来编写生成 stritg 或 FormttableString 的代码。

public static string ToGerman(FormattableString fts)
{
    return string.Format(null,System.Globalization("de-de"),fts.Format.fts.GetArguments());
}

上述代码我们定义一个将字符串转换为德语格式的方法,它接受一个类型为 FormattableString 的参数,返回一个字符串。我么们可以在内插字符串结果上直接调用这个方法。当我们编写类似的方法时需要有两点需要注意:


  1. 不要给这些方法编写以 string 类型作为参数的重载,因为如果存在 string 参数类型的重载编译器会优先选择以 string 类型为参数的方法;
  2. 不能将这些方法设计为可扩展的方法,因为编译器在判断应该生成 string 还是 FormattableString 的时候会考虑字符串位于运算符的哪一侧,如果位于左侧就生成 string 。


目录
相关文章
|
5月前
|
人工智能 UED
DynamiCrafter:可实现任意类型静态图像转化为逼真动态视频
【2月更文挑战第17天】DynamiCrafter:可实现任意类型静态图像转化为逼真动态视频
330 1
DynamiCrafter:可实现任意类型静态图像转化为逼真动态视频
|
2月前
|
算法 网络性能优化
网络中窗口的含义及作用
【8月更文挑战第24天】
24 0
|
5月前
|
存储 Python Windows
文件位置标记与定位:概念、方法与实现
文件位置标记与定位:概念、方法与实现
76 0
|
12月前
|
C#
C#小知识之中英文转换、去空格
# 一、中英文转换 ## 1、安装NPinYin ![请在此添加图片描述](https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/column/article/5877188/20231031-1f77b9b6.png?x-cos-security-token=kcWkaWALSQ5t0gKzZRkVwYOOBJMLQ8Ra8df6748cc017b8b22443671efb8aed172ct0qMmH-Si3jPfLmVc91udBHTdfdp2n1Qk-hBfLRQF5l22U2cHOMKfU7b0bWfl1t
144 0
C#小知识之中英文转换、去空格
|
Web App开发 机器人 数据安全/隐私保护
将上下文长度扩展到256k,无限上下文版本的LongLLaMA来了?
将上下文长度扩展到256k,无限上下文版本的LongLLaMA来了?
161 0
|
移动开发 关系型数据库 atlas
空间转录组|数据读入,标准数据形式外,还有哪些"天残地缺"可以读取
空间转录组|数据读入,标准数据形式外,还有哪些"天残地缺"可以读取
1400 0
|
人工智能 编解码 移动开发
当「分割一切」遇上图像修补:无需精细标记,单击物体实现物体移除、内容填补、场景替换(2)
当「分割一切」遇上图像修补:无需精细标记,单击物体实现物体移除、内容填补、场景替换
118 0
|
计算机视觉
当「分割一切」遇上图像修补:无需精细标记,单击物体实现物体移除、内容填补、场景替换(1)
当「分割一切」遇上图像修补:无需精细标记,单击物体实现物体移除、内容填补、场景替换
133 0
WORD研究:“允许标点溢出边界”在稿纸下有用,其他情况下很不明显
WORD研究:“允许标点溢出边界”在稿纸下有用,其他情况下很不明显
203 0
WORD研究:“允许标点溢出边界”在稿纸下有用,其他情况下很不明显
|
Java
剪裁NV21任意一部分的代码
剪裁NV21任意一部分的代码
118 0