我在交替使用它们。它们之间有什么区别吗?
表面上看,它们似乎在功能上是相同的,但主要区别在于:
Length
是字符串的一个定义属性,通常用来获取字符串的长度。
.Count()
是作为扩展方法实现的。也就是说,string.Count()
实际上调用的是Enumerable.Count(this IEnumerable<char>)
,即一个属于 System.Linq
扩展方法的函数,因为 string
实质上是一个 char
序列。
尽管考虑到 LINQ 可枚举方法的性能问题,但仍然应该使用 Length
,因为它已经内置在字符串中。
String实现了IEnumerable接口,因此它有一个名为Count的方法,而Length是String类中的属性。
String.Length
是使用的“正确”属性。String.Count()
只是一个 IEnumerable<T>.Count()
实现,可能会更慢。
Stopwatch timer = new Stopwatch();
string SomeText = @"";
bool DoLength = true;
//DoLength = false;
if (DoLength) //1252
{
timer.Start();
SomeText.Length.Dump("Length");
timer.Stop();
timer.ElapsedTicks.Dump("Elapsed");
}
else //1166
{
timer.Start();
SomeText.Count().Dump("Count");
timer.Stop();
timer.ElapsedTicks.Dump("Elapsed");
}