Функция Len () против строки.Свойство длины; что выбрать?
Я делаю переход от VB6 к VB.Net (VS 2010) и имеют базовое, а не расширительное понимание последнего. У меня, очевидно, есть довольно много кода... Я не решаюсь использовать слово "обновить", когда "порт" было бы более подходящим, учитывая, что мастер обновления в прошлых версиях VS мог бы просто прокомментировать код и сказать: "Эй, почему бы вам не начать заново с нуля?"
В одной процедуре, которую я привожу через функцию Len(), была использована для определения длины строковой переменной. Это все еще работает в VB.Net (хотя я предполагаю, что это на самом деле вызов метода Strings.Len), но другой альтернативой является просто запрос свойства .Length переменной.
Итак, мой вопрос: знает ли кто-нибудь о какой-либо проверенной и подтвержденной пользе использования одного подхода по сравнению с другим, или это просто вопрос личных предпочтений. Любые указатели на подобные ситуации, с которыми я могу столкнуться, когда буду прогрессировать, также будут оценены, хотя, учитывая рекомендации по переполнению стека, это только один вопрос, который мне интересно увидеть, есть ли конкретный ответ.
5 ответов:
Потому что вы используете VB.NET, ваш
Stringsможет бытьNothing, и если вы явно не проверите это, большинство методов VB, включаяLen, будут рассматривать его так же, какString.Empty, т. е."".С отражателем вы можете видеть, что
Lenреализуется как нулевая проверка, возвращающая0дляNothingи в противном случае возвращающая.Length, и дрожание, вероятно, будет в строке вызова.Итак, если вы используете другие методы VB, я бы предложил использовать
Lenтоже, если вы не знаете, чтоStringне являетсяNothingили проверить наNothingвезде.
Итак, согласно это:
Len, еще одна классическая базовая функция, возвращает длину строки. Система.Строка имеет свойство Length, которое предоставляет ту же информацию. Разве одно лучше другого?
С точки зрения производительности, эти две функции показывают небольшую разницу по сравнению с 1000 итерациями. В этом случае нет никаких оснований предпочесть одно другому, плюс нет никакой функциональной разницы. Я отчасти неравнодушен к использованию собственности значение, а не функция VB, поскольку она поощряет думать о строках .NET как об объектах. Однако, по сути, это всего лишь личные предпочтения.
Если Вы доверяете их слову, то вот вам и ответ. В противном случае, кодирование теста и повторение должны дать вам окончательный ответ.
Я не уверен в специфике метода
Len()(мой язык выбора-C#), но я бы сказал, что определенно пойду со свойствомLength.Lengthявляется членом классаSystem.String, тогда какLen()- Нет.Я предполагаю, что
Len()- это просто прокладка VB поверх свойстваLength. Кто-то, вероятно, может привести аргумент, что использованиеLen()более идиоматично с точки зрения VB. Я думаю, что предпочел бы использовать свойство, встроенное в класс, а не просто использовать другой механизм просто потому, что это предусмотрено языком.
В дополнение к сообщению @Andrew, Len() является Строковой функцией из библиотеки времени выполнения Visual Basic, где as
Lengthявляется свойством классаSystem.StringAPI .net framework.
Метод
Lenпредусмотрен для обратной совместимости со старым VB6 (и более ранним) non-.NET код. Нет ничего технически неправильного в его использовании. Это сработает, и очень хорошо. Но, лучше использовать новый способ .NET делать вещи, когда это возможно. Помимо того, что вы больше погружаетесь в ".NET-мышление", единственное реальное ощутимое преимущество использованияString.Lengthсостоит в том, что это облегчает перенос кода на другие языки .NET в будущем.