4

Joe Duffy 的博客暗示 usingstring.Substringstring.Split.

我不知道它是否说该Substring方法没有分配新字符串,或者它是否更有效,因为它不会进行任何不需要的分配。您能否解释一下它如何更有效并举一个例子。

我将他的第一个示例理解为创建一个数组,然后处理数组中的每个字符串。

string str = ...;
string[] substrs = str.Split(',');
foreach (string subtr in substrs) {
Process(substr);
}

以下如何更有效

string str = ...;
int lastIndex = 0;
int commaIndex;
while ((commaIndex = str.IndexOf(',', commaIndex)) != -1) {
    Process(substr, lastIndex, commaIndex);
    lastIndex = commaIndex + 1;

我看到的是 String.IndexOf用来查找逗号的索引然后处理字符串。我假设他打算String.Substring在处理过程中用来提取数据。下面的评论之一表明他可能会一个字一个字地拉它。他会一直拉字符,直到他击中下一个逗号,可能会建立一个字符数组?

4

1 回答 1

8

好伤心。

老笑话:经理想知道程序员A和程序员B哪个更好,所以他举办了一场比赛。他们都将编写一个程序来解决一个给定的复杂问题,编写最好的程序的人将获胜。

两位程序员提交了他们的答案。程序员 A 的程序跑得最快,经理正要宣布他是赢家时,程序员 B 指出程序员 A 的程序提供的答案有点不对劲。

“但我的程序仍然是最快的,我应该赢”,程序员 A 说。

“如果答案不一定是正确的,我可以写一个比你快 10 倍的程序”,程序员 B 反驳道。

Joe Duffy 的第二个例子,他避免使用 string.Split(),是错误的。它不会编译。变量“substr”未定义。

我休息一下。

于 2013-07-31T02:56:16.650 回答