Функция 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.String
API .net framework.
Метод
Len
предусмотрен для обратной совместимости со старым VB6 (и более ранним) non-.NET код. Нет ничего технически неправильного в его использовании. Это сработает, и очень хорошо. Но, лучше использовать новый способ .NET делать вещи, когда это возможно. Помимо того, что вы больше погружаетесь в ".NET-мышление", единственное реальное ощутимое преимущество использованияString.Length
состоит в том, что это облегчает перенос кода на другие языки .NET в будущем.