Сравнение экранированных значений в шестизначном Юникоде
У меня есть шестизначный символ Unicode, напримерU+100000
который я хочу сделать сравнение с другимchar
в моем коде C #.
Мое чтениеДокументация MSDN является то, что этот символ не может быть представленchar
и должен вместо этого быть представлен.string
символ Unicode в диапазоне от U + 10000 до U + 10FFFF недопустим в символьном литерале и представлен с использованием суррогатной пары Unicode в строковом литерале
Я чувствую, что яЯ упускаю что-то очевидное, но как вы можете заставить последующее сравнение работать правильно:
public bool IsCharLessThan(char myChar, string upperBound)
{
return myChar < upperBound; // will not compile as a char is not comparable to a string
}
Assert.IsTrue(AnExample('\u0066', "\u100000"));
Assert.IsFalse(AnExample("\u100000", "\u100000")); // again won't compile as this is a string and not a char
редактировать
k, я думаю, что мне нужно два метода, один для принятия символов и другой для принятиябольшие символы то есть строки. Так:
public bool IsCharLessThan(char myChar, string upperBound)
{
return true; // every char is less than a BigChar
}
public bool IsCharLessThan(string myBigChar, string upperBound)
{
return string.Compare(myBigChar, upperBound) < 0;
}
Assert.IsTrue(AnExample('\u0066', "\u100000));
Assert.IsFalse(AnExample("\u100022", "\u100000"));