在c#中实现strcmp(str1,str2)函数

Lea*_*ner 0 c#

我有以下功课问题:

有很多方法可以实现strcmp()函数.
请注意,如果str1按字母顺序排在str2之上,则strcmp(str1,str2)返回负数;如果两者相等,则返回0;如果str2按字母顺序排在str1之上,则返回postiveve.

在它中可以用C实现如下:

int mystrcmp(const char *s1, const char *s2) 
{ 
    while (*s1==*s2) 
    { 
        if(*s1=='\0') 
           return(0); 
        s1++; 
        s2++; 
    } 
    return(*s1-*s2); 
} 
Run Code Online (Sandbox Code Playgroud)

所以现在我想在C#中实现它,而不使用.NET的任何内置方法.我怎么能做到这一点?

Dan*_*ker 5

为了避免使用.NET或BCL中的任何可用方法,您必须避免使用string的Length属性(因为属性是通过一种或两种方法实现的).而且出于同样的原因,你必须避免使用[] indexer属性.

所以你很满意.

您假设数字字符代码表示人类重要的排序顺序.它没有--C#中的字符代码是Unicode,其中有很多字母表,其中一些使用西方字母(低值)和它们自己的附加字符(高值)的混合.

因此,您可以在自己的代码中重现大量字符集信息,因此您知道如何从Unicode中订购两个字符,或者您需要在BCL中调用一个方法.