【发布时间】:2013-03-01 22:30:26
【问题描述】:
在本例中,我必须将数组转换为字符串才能使用内置的String.Compare 方法。
char[] array = {'a','b','c'};
string s = "abc";
// here is the extra string allocation
var arrayString = new String(array);
var compareResult = String.Compare(s, arrayString);
有没有一种简单的方法可以在不分配额外字符串的情况下将字符串与 char 数组进行比较?
注意:这里我需要比较语义 "[a] 32 位有符号整数,表示两个比较数之间的词法关系。"
小于零 -> strA 小于 strB。
零 -> strA 等于 strB。
大于零 -> strA 大于 strB。
(我在循环中进行此比较,并且通过额外的字符串分配(25-100MB,基于我的输入大小)产生了很多额外的垃圾_。
我想我最终可能会弄脏自己的手,自己编写代码。
【问题讨论】:
-
你可以遍历字符串——它实现了
IEnumerable<Char>。 -
你能发布你的比较代码吗?我不明白你为什么在比较循环中生成更多变量???只需在 char 数组上使用 for each 循环