博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FormattableString 取代特定区域字符串
阅读量:2020 次
发布时间:2019-04-28

本文共 941 字,大约阅读时间需要 3 分钟。

有些软件系统是针对全球来开发的,因此一些字符串需要根据不同地区不同语言做出特定的处理。如果针对不同地区不同用语言分别编写字符串处理方法的话代码量是巨大的。那么这个时候我们可以用到内插字符串深层的特性,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 。
  3. 更多文章请扫码关注公众号:“喵叔呦” 3Fn2bd.jpg

转载地址:http://uzqxf.baihongyu.com/

你可能感兴趣的文章
Quartz入门实例7-处理被中断的Job
查看>>
Quartz入门实例8-实现一个Job监听器
查看>>
Leetcode 删除排序链表中的重复元素
查看>>
服务器修改端口
查看>>
微信学习资料
查看>>
JS(1) JavaScript 用法
查看>>
(六) JavaScript 对象
查看>>
开源项目(3-1)行为提取和动作识别
查看>>
[hbase] hbase 基础使用
查看>>
Android入门笔记10: AutoCompleteTextView 自动补全文本
查看>>
Android入门笔记16: EditText 和 返回键
查看>>
909422229_Jeesite多表联合列表分页实现
查看>>
909422229_阻塞与非阻塞的区别
查看>>
Node.js学习 - GET/POST
查看>>
CentOS7安装Nginx并部署
查看>>
Zookeeper安装使用及JavaAPI使用
查看>>
SQL Server中的数据类型
查看>>
SpringMVC学习系列(4) 之 数据绑定-1
查看>>
秒杀的基本知识点,了解一下
查看>>
Linux如何在系统启动时自动加载模块
查看>>