В чем разница между String.Count и String.Length? - PullRequest
9 голосов
/ 27 марта 2012

Я использую их попеременно, есть ли разница между ними?

Ответы [ 5 ]

12 голосов
/ 27 марта 2012

На первый взгляд они кажутся функционально идентичными, но основное отличие состоит в следующем:

  • Length - это свойство, которое определяется строками и является обычным способом определения длиныстроки

  • .Count() реализован как метод расширения.То есть на самом деле string.Count() вызывает Enumerable.Count(this IEnumerable<char>), метод расширения System.Linq, учитывая, что string действительно последовательность char с.

Несмотря на проблемы производительности перечислимых методов LINQ, используйте Length вместо этого, поскольку он встроен прямо в строки.

1 голос
/ 25 апреля 2017

Мне было интересно узнать разницу в скорости между счетчиком и длиной. Я верил, что длина будет быстрее ...

Я создал простой скрипт в 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. Я был удивлен, что граф оказался быстрее, чем длина.

Не стесняйтесь делать свои собственные тесты.

1 голос
/ 27 марта 2012

String.Length - это «правильное» свойство для использования. String.Count() - это просто реализация IEnumerable<T>.Count(), которая может быть медленнее.

1 голос
/ 27 марта 2012

String реализует IEnumerable, поэтому у него есть метод Count, в то время как Length является свойством в классе String.

0 голосов
/ 27 марта 2012

Это связано и может ответить на ваш вопрос. Вы должны выбрать один и придерживаться его (вероятно, длина в случае простой строки)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...