首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CLR关于语言文化的类型一CultureInfo类和字符串与线程的关联

在CLR中,每个线程都关联了两个特殊的属性,每个属性都引用一个CultureInfo对象.属性如下: (1)、CurrentCultrue属性 Thread类下面的CurrentCultrue属性,关联的是当前线程的...该属性用于数字和日期的格式化、字符串大小写转换以及字符串比较.格式化的同时要用到CultureInfo对象的"语言"和"国家"部分.创建线程时,这个线程属性被设为一个默认的CultrueInfo对象,其值通过调用...调用代码: var currentThreadLanguage = Thread.CurrentThread.CurrentUICulture.LCID; var cl = new CultureInfo...Console.WriteLine("简称:{0},全称:{1}",cl.Name,cl.NativeName); //输出简称:zh-CN,全称:中文(中国) (3)、CompareInfo属性 .Net Framework中每个...CultureInfo实例中都有一个CompareInfo属性实例,该属性初始化了一个根据当前语言/国家的CompareInfo实例,该类型封装了语言文化的字符排序表信息(根据Uniocde标准的定义)

66940
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    .NET Core中多语言支持

    中的Async和Await模式,会对Thread.CurrentThread.CurrentCulture和Thread.CurrentThread.CurrentUICulture这两个线程的语言属性产生影响吗...和CurrentUICulture都为zh-CN了 这说明在.NET Core中,默认情况下线程的CurrentCulture和CurrentUICulture属性是由启动它的线程来决定的,上面的结果很明显由于第一层线程的...所以在.NET Core中要设置线程的CurrentCulture和CurrentUICulture属性,最简单的办法就是在根线程(主线程)上设置CurrentCulture和CurrentUICulture...最后如果是在ASP.NET Core中,只需要写一个中间件(Middleware),来更改主线程的CurrentCulture和CurrentUICulture属性为特定语言,即可实现.resx资源文件的全局利用...,当然ASP.NET Core中也有一套自带的资源文件匹配规则,这里大家觉得怎么用起来方便怎么用即可。

    1.4K20

    造轮子之多语言管理

    多语言也是我们经常能用到的东西,asp.net core中默认支持了多语言,可以使用.resx资源文件来管理多语言配置。 但是在修改资源文件后,我们的应用服务无法及时更新,属实麻烦一些。...这里我们选用数据库配置的方式,直接查询数据库的多语言配置进行转换。 创建表实体 多语言管理只需要两个表结构,一个是多语言国家表,一个是多语言资源表。两者是一对多关系。...方法,我们先通过缓存查询多语言内容,若查询不到再进数据库查询,减少数据库的并发量。...启用多语言 再Program中添加多语言代码: builder.Services.AddLocalization(options => options.ResourcesPath = "Resources...可以看到成功获取英文和中文的多语言列表。 就这样我们完成多语言管理的实现。

    27760

    停止使用==和!=来判断浮点数是否相等

    写代码的小伙伴都知道,在计算机里,我们使用浮点数来表示小数.然而,由于浮点数在计算机中的表示方式,直接使用==和!=来判断两个浮点数是否相等可能会导致意想不到的结果....为什么不能直接比较浮点数 浮点数在计算机中是以二进制形式存储的,这种表示方式会导致精度问题.例如,十进制的小数0.1在二进制中是一个无限循环小数,计算机只能存储其近似值.因此,两个看似相等的浮点数在计算机中可能并不完全相等...double a = 0.1 + 0.2; double b = 0.3; Console.WriteLine(a == b);// 输出: False 在上面的例子中,a 和 b 看似应该相等,但由于浮点数的精度问题...("Unsupported types, only the following types are supported: float, double, and decimal."); } 上面的代码中我们使用了自定义的...ConverTo 函数,所以这里我们将该函数的扩展一起提供出来.该扩展在 EasilyNET.Core 的库中已存在定义.同样这两个扩展函数也都已经加入.

    6210

    .NET的资源并不限于.resx文件,你可以采用任意存储形式

    在这个资源文件中,你不但可以添加单纯的文本资源条目,也可以添加图片、图标、文本文件以及其它类型文件。...不但如此,当你在.resx文件中定义任意类型资源条目的时候,默认定义的代码生成器会为你生成对应的托管代码,使你可以采用强类型编程的方式获取某个条目。 ?...比如说,如果你在一个名称为Resources.resx的资源文件中定义了如上图所示的两个字符串资源条目,默认的代码生成器或为你生成如下的代码。...而ResourceSet在整个资源体系中是一个重要的对象,它充当ResourceManager和物理存储的中介,下面是ResourceSet的定义。...ResourceSet对象中,肯定需要IO操作,所以ResourceSet构造函数中参数分别是Stream、文件名和一个IResourceReader的对象。

    1.5K80

    Blazor学习之旅(10)多语言+本地化

    多语言+本地化的背景 在Web应用开发中,我们可能会有一些需要多语言+本地化的场景,特别在一些国际化的外资企业当中特别常见。...因此,为Web应用提供多语言,页面内容可以本地化,会扩展我们的IT系统受众范围,提升一点用户体验。 因此,如何在Blazor中实现多语言+本地化就被提上议程。...在Blazor中实现本地化的方式 在Blaozr中实现本地化的方式,其实也就是ASP.NET Core提供的那些本地化工具: IStringLocalizer IStringLocalizerFactory...在Blazor中实现本地化的步骤 (1)准备工作 假设我们已经有了一个Blazor应用程序,并且有一个Home.razor的页面,需要支持中文(默认语言)、英语和德语。...但其实IStringLocalizer只是ASP.NET Core中本地化实现方式的一种而已,关于更多全球化和本地化的内容,建议阅读参考资料中的两篇文章,特别是建军兄最近整理的《理解ASP.NET Core

    45510

    全球化规则

    在本节中 规则 描述 CA1303:请不要将文本作为本地化参数传递 某外部可见的方法将一个字符串字面量作为参数传递给 .NET 构造函数或方法,该字符串应该是可本地化的字符串。...CA1304:指定 CultureInfo 某方法或构造函数调用的成员有一个接受 System.Globalization.CultureInfo 参数的重载,但该方法或构造函数没有调用接受 CultureInfo...参数的重载。...如果未提供 CultureInfo 或 System.IFormatProvider 对象,则重载成员提供的默认值可能不会在所有区域设置中产生您想要的效果。...如果未提供 System.Globalization.CultureInfo 或 IFormatProvider 对象,则重载成员提供的默认值可能不会在所有区域设置中产生您想要的效果。

    53110

    C# 字符串操作基本过程(Equals、Compare、EndsWith等处理方法)

    本文只介绍了比较方法,但是EndsWith,IndexOf等方法均采用相同的过程,先设置CultureInfo(一般情况下调用当前线程的CultureInfo,该语言文化可以通过控制面板设置),然后调用...CultureInfo实例下面的CompareInfo属性,实例化语言/国家的CompareInfo实例,并调用对应的字符串操作方法. ?...假名类型引用为日文平假名和片假名字符,表示在日语中的语音。 平假名用于本机日语表达式和单词,而片假名用于从"计算机"或"Internet"等其他语言借用的词语。 拼音声音可以表示在平假名和片假名。...注:返回的是当前线程的CurrentCulture实例属性,该实例属性返回一个全局CultureInfo对象,接着调用CompareInfo属性,返回一个CompareInfo对象,最后调用Compare...具体调用过程和第一种方法一样,区别就是判断过程中的大小写设置,ignoreCase为false,则走第一种方法的比较过程.

    1.9K20

    dotnet 使用 ToUpperInvariant 替换 ToUpper 以避免初始化 icu 过慢

    在应用软件启动过程中,客户端应用软件是对性能敏感的。比如在解析命令行参数的时候,有时候需要进行字符串处理逻辑。...一般来说命令行参数都是语言文化无关的,在需要进行全大写或全小写转换过程中,采用 ToUpperInvariant 替换 ToUpper 方法可以避免初始化 icu 模块,减少 icu 模块初始化过慢影响启动性能...在进行调查命令行解析库的性能时,发现了在命令行解析里面的某个逻辑需要对字符串转换为全大写时调用的是 ToUpper 里面传入 CultureInfo.InvariantCulture 参数方法,用来进行语言文化无关的转换大写...,如以下代码 chars[0] = char.ToUpper(chars[0], CultureInfo.InvariantCulture); 以上代码将会导致在启动过程中初始化 ICU 模块,而 ICU...方法用来判断是否在此语言文化之下,进行大小写转换和语言文化无关是相同的结果 以下是 dotnet 运行时里面对 Char 类型的 ToUpper 方法定义,可以看到实际调用的是 CultureInfo

    21110

    通过扩展改善ASP.NET MVC的验证机制

    在《使用篇》中我们谈到扩展的验证编程方式,并且演示了本解决方案的三大特性:消息提供机制的分离、多语言的支持和多验证规则的支持,我们现在来看看这样的验证解决方案最终是如何实现的。...然后我们创建ValidatorContextScope对象,而针对基类InvokeAction方法的执行就在该ValidatorContextScope中执行的。...BaseController是Controller的子类,在构造函数中我们将ActionInvoker属性设置成我们自定义的ExtendedControllerActionInvoker对象。...至于为什么需需要这么做,可以参考我的上一篇文章《在ASP.NET MVC中如何应用多个相同类型的ValidationAttribute?》。...自定义ExtendedDataAnnotationsModelValidator在Global.asax的Application_Start方法中通过如下的方式进行注册。

    765100
    领券