在一个字符串上使用字符串函数和更改的最佳方法是什么?

时间:2009-06-05 03:29:51

标签: .net performance string concatenation string-concatenation

编写代码的最佳方法是什么:

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 个答案:

答案 0 :(得分:1)

这些都是一样的。试试

Path.GetFileNameWithoutExtension(Request.Path)

答案 1 :(得分:1)

这三个基本相同。

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

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

我会使用#2,因为它的代码行数较少而且不会产生可读性,但它仍然是一段相当短的代码。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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