首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StringComparison.InvariantCulture澄清?

StringComparison.InvariantCulture澄清?
EN

Stack Overflow用户
提问于 2013-07-30 10:56:23
回答 1查看 724关注 0票数 1

根据MSDN:StringComparison.InvariantCulture

指定特定重载的和String.Compare方法所使用的区域性、大小写和String.Compare排序规则。

嗯,在我的样本中我没有做任何排序,并且仍然不明白为什么它会产生它产生的结果:

代码语言:javascript
复制
/*1*/   void Main()
/*2*/   {
/*3*/        string s1 = "lasst";
/*4*/        string s2 = "laßt"; 
/*5*/        Console.WriteLine (s1.Equals(s2, StringComparison.InvariantCulture));  
/*6*/        //True
/*7*/        
/*8*/        
/*9*/        
/*10*/       string s3 = "hello";
/*11*/       string s4 = "héllo"; 
/*12*/       Console.WriteLine (s3.Equals(s4, StringComparison.InvariantCulture)); 
/*13*/       //False
/*14*/   }

InvariantCulture使用基于英语的比较规则,但没有任何区域变化。

( 1)为什么它说lasst等于laßt?(一个人甚至没有英文字符.)

2)为什么hello不等于héllo

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-30 11:06:11

通过C#从“CLR”一书中获取相关片段

Note当比较方法没有执行序号比较时,它执行字符展开。字符扩展是指将字符展开为多个字符,而不考虑区域性。在上述情况下,德语Eszet字符‘Eszet’总是扩展为‘ss.s’。类似地,“埃塞”系结字符总是扩展为“AE.‘”。因此,在代码示例中,要比较的第二个调用总是返回0,而不管我实际传递给它的是哪种区域性。

字符串"héllo“不会在内部通过字符展开进行转换,因此不被认为等于"hello”。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17945119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档