tga*_*ews 2 .net c# string clr string-comparison
我相信这两行是等价的,但在遇到一个奇怪的问题后,我不再相信这是事实.
String mimeType = context.Request.ContentType;
(String.Compare("text/xml", mimeType, true) == 0))
Run Code Online (Sandbox Code Playgroud)
是相同的 :
context.Request.ContentType.ToLower().Equals("text/xml")
Run Code Online (Sandbox Code Playgroud)
它们在CLR中的实现有何不同?
它们不等同,ToLower/ToUpper可能存在一些本地化问题.在没有区分大小写的情况下比较两个字符串的方法(考虑其中一个字符串可能为null,这就是我不喜欢str1.Equals方法的原因)是静态String.Equals方法:
bool areEqual = String.Equals(str1, str2, StringComparison.OrdinalIgnoreCase);
Run Code Online (Sandbox Code Playgroud)
它们并不完全等同; 看到这里.
以下是进行不区分大小写的比较的正确方法:
bool areSame = str1.Equals(str2, StringComparison.OrdinalIgnoreCase);
Run Code Online (Sandbox Code Playgroud)
这种方式也会更有效,因为它不会为小写副本分配单独的字符串.
| 归档时间: |
|
| 查看次数: |
384 次 |
| 最近记录: |