たとえば、C# コードでU+100000
別の文字と比較したい6 桁の Unicode 文字があります。char
MSDNのドキュメントを読むと、この文字は で表すことができずchar
、代わりに で表す必要がありstring
ます。
U+10000 から U+10FFFF の範囲の Unicode 文字は、文字リテラルでは許可されず、文字列リテラルでは 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、2 つのメソッドが必要だと思います。1 つは文字を受け入れる方法で、もう 1 つは「大きな文字」、つまり文字列を受け入れる方法です。そう:
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"));