前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FormattableString 取代特定区域字符串

FormattableString 取代特定区域字符串

作者头像
喵叔
发布2020-09-08 17:00:20
1.4K0
发布2020-09-08 17:00:20
举报
文章被收录于专栏:喵叔's 专栏

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

代码语言:javascript
复制
string message = $"我的名字叫 {name} ";

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

代码语言:javascript
复制
FormattableString message= $"我的名字叫 {name} ";

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

代码语言:javascript
复制
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 。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档