Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么';String.Count和String.Length之间的区别是什么?_C#_String_Count - Fatal编程技术网

C# 什么';String.Count和String.Length之间的区别是什么?

C# 什么';String.Count和String.Length之间的区别是什么?,c#,string,count,C#,String,Count,我交替使用它们,它们之间有什么区别吗?字符串实现了IEnumerable,因此它有一个方法Count,而Length是String类中的一个属性。字符串。Length是要使用的“正确”属性String.Count()只是一个IEnumerable.Count()实现,可能会更慢。这是并且可能会回答您的问题。您应该选择一个并坚持使用它(可能是简单字符串的长度)从表面上看,它们在功能上是相同的,但主要区别在于: Length是字符串定义的属性,是查找字符串长度的常用方法 .Count()作为扩展方

我交替使用它们,它们之间有什么区别吗?

字符串实现了
IEnumerable
,因此它有一个方法
Count
,而
Length
是String类中的一个属性。

字符串。Length
是要使用的“正确”属性
String.Count()
只是一个
IEnumerable.Count()
实现,可能会更慢。

这是并且可能会回答您的问题。您应该选择一个并坚持使用它(可能是简单字符串的长度)

从表面上看,它们在功能上是相同的,但主要区别在于:

  • Length
    是字符串定义的属性,是查找字符串长度的常用方法

  • .Count()
    作为扩展方法实现。也就是说,
    string.Count()
    真正做的是调用一个
    System.Linq
    扩展方法,因为
    string
    实际上是一个
    char
    s序列


尽管LINQ可枚举方法存在性能问题,但还是使用
Length
,因为它直接内置在字符串中。

我很好奇计数和长度之间的速度差异。我相信长度会更快

我在LinqPad中创建了一个简单的脚本来测试这一点:

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");
}
我在SomeText中添加了一长串文本来测试这一点。我注意到,为了在第二次测试中获得更准确的结果,我必须分别进行测试。串联运行总是会在第二次呼叫时产生更快的响应。(删除DoLength的注释将运行计数测试)

我将结果放在if或else旁边的注释中。我很惊讶计数竟然比长度快

请随意做你自己的测试