如何在没有内存分配的情况下将字符串与char []进行比较?

Chr*_*ber 2 .net c#

在这个例子中,我必须将数组转换为字符串以使用内置的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);
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以将字符串与char数组进行比较而无需额外的字符串分配?

注意:我需要比较语义,我需要"[a] 32位有符号整数,表示两个比较之间的词汇关系."

小于零 - > strA小于strB.

零 - > strA等于strB.

大于零 - > strA大于strB.

(我在循环中进行这种比较,并且我使用额外的字符串分配生成了大量额外的垃圾(基于输入的大小为25-100MB)_.

我想我最终可能会弄脏自己,只是自己编写代码.

Oli*_*bes 6

试试这个

int len = Math.Min(array.Length, s.Length);
for (int i = 0; i < len; i++) {
    if (s[i] < array[i]) return -1;
    if (s[i] > array[i]) return +1;
}
return s.Length.Compare(array.Length);
Run Code Online (Sandbox Code Playgroud)