相关疑难解决方法(0)

比较两个字符串,忽略C#中的大小写

可能重复:
不同的字符串比较方法有什么区别

以下哪两个更有效?(或者可能还有第三种选择更好吗?)

string val = "AStringValue";

if (val.Equals("astringvalue", StringComparison.InvariantCultureIgnoreCase))
Run Code Online (Sandbox Code Playgroud)

要么

if (val.ToLowerCase() == "astringvalue")
Run Code Online (Sandbox Code Playgroud)

c# string comparison equals

305
推荐指数
6
解决办法
35万
查看次数

C#中字符串比较方法的差异

在C#中比较字符串非常简单.事实上,有几种方法可以做到这一点.我在下面的块中列出了一些.我很好奇的是它们之间的差异以及何时应该使用其他的?是否应该不惜一切代价避免?还有更多我没有列出?

string testString = "Test";
string anotherString = "Another";

if (testString.CompareTo(anotherString) == 0) {}
if (testString.Equals(anotherString)) {}
if (testString == anotherString) {}
Run Code Online (Sandbox Code Playgroud)

(注意:我在这个例子中寻找平等,不小于或大于,但也可以随意发表评论)

c# string comparison

256
推荐指数
7
解决办法
19万
查看次数

C#中的字符串比较性能

有许多方法可以比较字符串.通过一种方式比另一种方式获得性能提升吗?

我总是选择像这样比较字符串:

string name = "Bob Wazowski";
if (name.CompareTo("Jill Yearsley") == 0) {
    // whatever...
}
Run Code Online (Sandbox Code Playgroud)

但我发现很少有人这样做,如果有的话,我看到更多的人只是做一个直接的==比较,据我所知,这是比较字符串的最差方式.我错了吗?

另外,它是如何比较LINQ查询中的字符串的?例如,我喜欢做以下事情:

var results = from names in ctx.Names
              where names.FirstName.CompareTo("Bob Wazowski") == 0
              select names;
Run Code Online (Sandbox Code Playgroud)

但同样,我看到很少有人在他们的LINQ查询中进行字符串比较.

.net c# linq performance string-comparison

20
推荐指数
4
解决办法
3万
查看次数

在C#中确定未修剪字符串是否为空的最有效方法是什么?

我有一个字符串,周围可能有空格字符,我想检查它是否基本上是空的.

有很多方法可以做到这一点:

1  if (myString.Trim().Length == 0)
2  if (myString.Trim() == "")
3  if (myString.Trim().Equals(""))
4  if (myString.Trim() == String.Empty)
5  if (myString.Trim().Equals(String.Empty))
Run Code Online (Sandbox Code Playgroud)

我知道这通常是过早优化的明显案例,但我很好奇,并且有可能做到这一点足以产生性能影响.

那么哪一个是最有效的方法呢?

有没有更好的方法我没想过?


编辑:此问题的访问者注意事项:

  1. 对这个问题进行了一些非常详细的调查 - 特别是来自Andy和Jon Skeet.

  2. 如果你在搜索某些内容时偶然发现了这个问题,那么至少阅读Andy和Jon的帖子是非常值得的.

似乎有一些非常有效的方法,有效的方法取决于我需要处理的字符串的内容.

如果我无法预测字符串(在我的情况下我不能预测),Jon的IsEmptyOrWhiteSpace方法似乎通常更快.

谢谢大家的意见.我将选择安迪的答案作为"正确"的答案仅仅是因为他应该为他所付出的努力赢得声誉,而乔恩已经拥有了十亿美元的声誉.

c# string optimization performance coding-style

14
推荐指数
2
解决办法
2202
查看次数

时间:2019-03-17 标签:c#String.Compare vs String.CompareOrdinal

在 C# 中,String.CompareOrdinal(strA, strB)相当于String.Compare(strA, strB, StringComparison.Ordinal)?

我检查了https://msdn.microsoft.com/en-us/library/e6883c06.aspx上的文档,它没有提到这一点。

c# string

5
推荐指数
1
解决办法
1699
查看次数