我有一个面试问题,要求我对初级程序员编写的一段代码提供“反馈”。他们暗示可能存在问题,并表示它将大量用于大型字符串。
public string ReverseString(string sz)
{
string result = string.Empty;
for(int i = sz.Length-1; i>=0; i--)
{
result += sz[i]
}
return result;
}
我没发现。我没有看到任何问题。 事后看来,我本可以说用户应该调整大小,但看起来 C# 没有调整大小(我是 C++ 人)。
我最后写了一些东西,比如尽可能使用迭代器,容器中的 [x] 不能随机访问,所以它可能很慢。和杂项。但我明确地说我从来没有优化过 C# 代码,所以我的想法在面试中可能没有让我失望。
我想知道,这段代码有什么问题,你们看到了吗?
-编辑-
我把它变成了一个 wiki 因为可以有几个正确的答案。 此外,我很高兴我明确表示我从来不需要优化 C# 程序并提到了其他杂项。哎呀。我一直认为 C# 在这些类型的事情上没有任何性能问题。糟糕。
请您参考如下方法:
最重要的是?这会降低性能——它必须创建很多字符串(每个字符一个)。最简单的方法是这样的:
public static string Reverse(string sz) // ideal for an extension method
{
if (string.IsNullOrEmpty(sz) || sz.Length == 1) return sz;
char[] chars = sz.ToCharArray();
Array.Reverse(chars);
return new string(chars);
}