Sześciocyfrowy unicode uniknął porównania wartości

Mam na przykład sześciocyfrowy znak UnicodeU+100000 które chciałbym porównać z innymchar w moim kodzie C #.

Moje czytanieDokumentacja MSDN jest to, że ta postać nie może być reprezentowana przezchari zamiast tego musi być reprezentowany przezstring.

znak Unicode w zakresie U + 10000 do U + 10FFFF jest niedozwolony w literale znakowym i jest reprezentowany za pomocą pary surogatów Unicode w literale łańcuchowym

Czuję, że brakuje mi czegoś oczywistego, ale jak można uzyskać poprawne porównanie, aby działało poprawnie:

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

edytować

k, myślę, że potrzebuję dwóch metod, jednej do akceptowania znaków, a drugiej do akceptowania „wielkich znaków”, tj. łańcuchów. Więc:

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"));

questionAnswers(2)

yourAnswerToTheQuestion