0

编写代码的最佳方式应该是什么:

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

4 回答 4

1

这些都是一样的。尝试

Path.GetFileNameWithoutExtension(Request.Path)
于 2009-06-05T03:33:13.190 回答
1

三者基本相同。

记住字符串是不可变的。每次调用字符串上的方法时,它都会分配一个新的字符串对象,因此调用Remove()会创建一个新对象,然后用于调用Replace().

1和2基本相同。#3 有点不同,因为您使用 3 个单独的变量,因此您保留对这些字符串的引用,以便以后使用它们。垃圾收集器应该知道如何处理所有 3 个示例并大致相同地处理它们,但无论您是否将中间字符串存储为变量。

我会使用#2,只是因为它的代码行数更少并且不会牺牲可读性,但它仍然是相当短的代码。

于 2009-06-05T03:38:12.173 回答
1

这些调用可能会引发异常。对于玩具代码,可以不检查,但是在获得路径后,您应该在调用 Remove 之前检查 String.NullOrEmpty 和长度。所以,这就是为什么我会避免#2。除此之外,#1 似乎更干净,除非您需要在方法中的其他位置使用中间值(当前作为路径和 current2)。

于 2009-06-05T03:38:19.117 回答
0

字符串在 .Net 中是不可变的,因此您将从所有这些方法中获得相同的性能。

于 2009-06-05T03:32:46.030 回答