面向云技术架构 - 痴者工良

  • 首页
  • 工良写的电子书
    • kubernetes 教程
    • 从 C# 入门 Kafka
    • 多线程和异步
    • 动态编程-反射、特性、AOP
    • 表达式树
  • 本站文章导航
  • 隐私政策
愿有人陪你颠沛流离
遇到能让你付出的事物或者人,都是一种运气。
能遇到,就该珍惜。或许你们最终没能在一起,但你会切实地感受到力量。
正因为这样,那段相遇才变得有价值,才没有辜负这世间的每一段相遇。
  1. 首页
  2. 笔记和吹水
  3. 代码片段
  4. 正文

C# 全球化

2020年2月26日 3012点热度 3人点赞 4条评论
内容纲要

如果写 C# 时,使用了分析器,很可能会提示

string.ToString() 的行为可能因当前用户的区域设置而异

这里针对某些字符/字符串转换时出现的问题,做个列表。

IFormatProvider

这个接口用于实现字符串如何格式化转为数值类型。一般来说666、0.666 这样的数没问题,但是使用数学符号等情况、全球化字符差异,可能会出错。
IFormatProvider 正是为了解决这些问题。

Convert.ToInt32 、 string.ToString()将字符串/Object转为值类型时,会提示 需要 IFormatProvider 。

而 char 、byte 等则不会出现此现象。因此一方面考虑尽量不使用字符串。

只有以下两个重载会被提示需要 IFormatProvider,需要自己实现一个 IFormatProvider 接口。

ToInt32(Object, IFormatProvider)
ToInt32(String, IFormatProvider)
使用指定的区域性特定格式信息,将指定对象的值转换为 32 位带符号整数。

可以查看
https://docs.microsoft.com/zh-cn/dotnet/api/system.convert.toint32?view=netframework-4.8#System_Convert_ToInt32_System_Object_System_IFormatProvider_

NumberFormatInfo 提供用于对数字值进行格式设置和分析的区域性特定信息。
这个类型对简化字符串转换操作非常有帮助。
可以通过特定规则将各种字符串存放的各种数字形式取出来。
请查看
https://docs.microsoft.com/zh-cn/dotnet/api/system.globalization.numberformatinfo?view=netframework-4.8#properties

System.Globalization.CultureInfo.CurrentCulture

提供有关特定区域性(对于非托管代码开发,则称为“区域设置”)的信息。 这些信息包括区域性的名称、书写系统、使用的日历、字符串的排序顺序以及对日期和数字的格式化设置。

ToLwer() 等字符串操作时,需要使用到 CultureInfo。
可以查看
https://docs.microsoft.com/zh-cn/dotnet/api/system.globalization.cultureinfo?view=netcore-3.1

一般我们可以这样

.ToLower(System.Globalization.CultureInfo.CurrentCulture)

StringComparison

将指定的 StringComparison 实例转换为 StringComparer 实例。
一般在字符串对比查找时出现。
不同方式查找对比字符串,性能有所差异,具体可以查看
https://blog.csdn.net/li5852258/article/details/70326763

一般来说,我们这样使用就行了

.Contains("a",StringComparison.CurrentCulture)
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: c 全球化
最后更新:2020年2月26日

痴者工良

高级程序员劝退师

点赞
< 上一篇
下一篇 >

文章评论

  • whuanle

    需要注意的是,如果使用了 EFCore 等表达式树翻译,使用全球化可能会导致出错!

    2020年2月26日
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    文章目录
    • IFormatProvider
    • System.Globalization.CultureInfo.CurrentCulture
    • StringComparison

    COPYRIGHT © 2022 whuanle.cn. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang

    粤ICP备18051778号

    粤公网安备 44030902003257号