我有以下功课问题:
有很多方法可以实现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的任何内置方法.我怎么能做到这一点?
为了避免使用.NET或BCL中的任何可用方法,您必须避免使用string的Length属性(因为属性是通过一种或两种方法实现的).而且出于同样的原因,你必须避免使用[] indexer属性.
所以你很满意.
您假设数字字符代码表示人类重要的排序顺序.它没有--C#中的字符代码是Unicode,其中有很多字母表,其中一些使用西方字母(低值)和它们自己的附加字符(高值)的混合.
因此,您可以在自己的代码中重现大量字符集信息,因此您知道如何从Unicode中订购两个字符,或者您需要在BCL中调用一个方法.