Что было бы лучшим способом использовать строковые функции и изменения на одной строке? - PullRequest
0 голосов
/ 05 июня 2009

Какой должен быть лучший способ написания кода:

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 ]

1 голос
/ 05 июня 2009

Эти вызовы могут выдавать исключения. Для игрушечного кода ничего не стоит проверять, но после того, как вы получите путь, вы должны проверить String.NullOrEmpty и длину перед вызовом Remove. Вот почему я бы избегал # 2. Кроме этого, # 1 выглядит чище, если только вам не нужно использовать промежуточные значения (current как путь и current2) где-то еще в методе.

1 голос
/ 05 июня 2009

Это все одинаковые. Попробуйте

Path.GetFileNameWithoutExtension(Request.Path)
1 голос
/ 05 июня 2009

Все три в основном одинаковы.

Помните, что строки неизменны. Каждый раз, когда вы вызываете метод для строки, он выделяет новый строковый объект, поэтому при вызове Remove() создается новый объект, который затем используется для вызова Replace().

1 & 2 в основном идентичны. № 3 немного отличается, потому что вы используете 3 отдельные переменные, поэтому вы держитесь за ссылки на эти строки, чтобы их можно было использовать позже. Сборщик мусора должен знать, что делать со всеми тремя примерами, и обрабатывать их примерно одинаково, независимо от того, храните ли вы промежуточные строки как переменные или нет.

Я бы использовал # 2, просто потому, что он содержит меньше строк кода и не жертвует удобочитаемостью, но все еще довольно короток.

0 голосов
/ 05 июня 2009

Строки являются неизменяемыми в .Net, поэтому вы получите одинаковую производительность от всех этих методов.

...