Что было бы лучшим способом использовать строковые функции и изменения на одной строке?
Какой должен быть лучший способ написания кода:
1)
Dim current = Request.Path
current = current.Remove(0, 1)
current = current.Replace(".aspx", "")
2)
Dim current = Request.Path.Remove(0, 1).Replace(".aspx", "")
3)
Dim current = Request.Path
Dim current2 = current.Remove(0, 1)
Dim current3 = current.Replace(".aspx", "")
Или 1-2 не имеют значения?
4 ответа
Это все одинаковые. Пытаться
Path.GetFileNameWithoutExtension(Request.Path)
Эти вызовы могут генерировать исключения. Для игрушечного кода ничего не стоит проверять, но после того, как вы получите путь, вы должны проверить String.NullOrEmpty и длину перед вызовом Remove. Вот почему я бы избегал #2. Кроме этого, #1 кажется чище, если только вам не нужно использовать промежуточные значения (current как путь и current2) где-то еще в методе.
Все три в основном одинаковы.
Помните, что строки неизменны. Каждый раз, когда вы вызываете метод для строки, он выделяет новый строковый объект, поэтому вызов Remove()
создает новый объект, который затем используется для вызова Replace()
,
1 и 2 в основном идентичны. № 3 немного отличается, потому что вы используете 3 отдельные переменные, поэтому вы держитесь за ссылки на эти строки, чтобы их можно было использовать позже. Сборщик мусора должен знать, что делать со всеми тремя примерами, и обрабатывать их примерно одинаково, независимо от того, храните ли вы промежуточные строки как переменные или нет.
Я бы использовал #2, просто потому, что он содержит меньше строк кода и не жертвует удобочитаемостью, но все еще довольно короток.
Строки являются неизменяемыми в.Net, поэтому вы получите одинаковую производительность от всех этих методов.