【发布时间】:2009-06-07 15:37:30
【问题描述】:
我正在使用this answer 慷慨提供给我的一些示例代码,当我输入一个长字符串以匹配它时,它在某个时候崩溃并出现 IndexOutOfRangeException。奇怪的是,当我检查字符串时,它似乎被设置为“System.Char[]”。为什么会发生这种情况,我该如何解决?
【问题讨论】:
我正在使用this answer 慷慨提供给我的一些示例代码,当我输入一个长字符串以匹配它时,它在某个时候崩溃并出现 IndexOutOfRangeException。奇怪的是,当我检查字符串时,它似乎被设置为“System.Char[]”。为什么会发生这种情况,我该如何解决?
【问题讨论】:
我强烈怀疑你有什么地方:
char[] chars = ...;
string myString = chars.ToString();
而不是
char[] chars = ...;
string myString = new string(chars);
【讨论】:
这段代码:
var mutated = member.Str.ToCharArray();
Convert.ToChar((member.Str[ipos] + delta)%123).ToString().CopyTo(0, mutated, ipos, 1);
member.Str = mutated.ToString();
应该按照 Jon 的建议:
var mutated = member.Str.ToCharArray();
Convert.ToChar((member.Str[ipos] + delta)%123).ToString().CopyTo(0, mutated, ipos, 1);
member.Str = new string(mutated);
【讨论】: