C#如何全局设置CultureInfo数字小数点分隔符为点而非逗号
全局设置C#默认小数点为点分隔符的实现方案
实现方法
方法1:入口代码全局配置(兼容所有主流.NET版本)
在程序启动入口的最开头位置添加如下配置代码即可,配置会作用于整个程序的所有线程:
首先引入必需的命名空间:using System.Globalization;
.NET Core 3.0+ / .NET 5及以上版本配置:
// 全局设置所有线程默认使用不变文化,小数点默认采用点分隔 CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.InvariantCulture;
.NET Framework版本补充配置:
如果是.NET Framework项目,除上述代码外,还需要额外配置当前启动线程的文化:
using System.Threading; using System.Globalization; // 配置当前启动线程的文化 Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture; // 配置后续新建线程默认使用不变文化(.NET Framework 4.5及以上版本支持) CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.InvariantCulture;
注意:配置代码必须放在所有业务逻辑执行之前,比如控制台项目的
Main方法第一行、WinForm项目Program.cs的Main方法开头、WPF项目App.xaml.cs的OnStartup方法开头。
方法2:项目文件配置(仅适用.NET 5及以上版本)
直接修改项目的.csproj文件,在<PropertyGroup>节点下添加如下配置即可:
<InvariantGlobalization>true</InvariantGlobalization>
该配置会让整个程序强制使用全球化不变模式,完全忽略系统的区域文化设置,默认小数点为点分隔。
验证
配置完成后原有代码无需做任何修改,输入4.6即可正常解析,不会再抛出格式异常。
内容的提问来源于stack exchange,提问作者a2bme
相关产品推荐
相关产品推荐

