Char.IsLowSurrogate Method (Char)
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Indicates whether the specified Char object is a low surrogate.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- c
- Type: System.Char
The character to evaluate.
Return Value
Type: System.Booleantrue if the numeric value of the c parameter ranges from U+DC00 through U+DFFF; otherwise, false.
In addition to representing single characters using a 16-bit code unit, UTF-16 encoding allows abstract characters to be represented using two 16-bit code units, which is known as a surrogate pair. The second element in this pair is the low surrogate. Its code unit can range from U+DC00 to U+DFFF. An individual surrogate has no interpretation of its own; it is meaningful only when used as part of a surrogate pair.
The following code example demonstrates the IsHighSurrogate, IsLowSurrogate, and IsSurrogatePair methods.
// This example demonstrates the Char.IsSurrogatePair() method using System; class Example { public static void Demo(System.Windows.Controls.TextBlock outputBlock) { char cHigh = '\uD800'; char cLow = '\uDC00'; string s1 = new String(new char[] { 'a', '\uD800', '\uDC00', 'z' }); string divider = String.Concat("\n", new String('-', 70), "\n"); outputBlock.Text += "\n"; outputBlock.Text += String.Format("Hexadecimal code point of the character, cHigh: {0:X4}", (int)cHigh) + "\n"; outputBlock.Text += String.Format("Hexadecimal code point of the character, cLow: {0:X4}", (int)cLow) + "\n"; outputBlock.Text += "\n"; outputBlock.Text += String.Format("Characters in string, s1: 'a', high surrogate, low surrogate, 'z'") + "\n"; outputBlock.Text += String.Format("Hexadecimal code points of the characters in string, s1: ") + "\n"; for (int i = 0; i < s1.Length; i++) { outputBlock.Text += String.Format("s1[{0}] = {1:X4} ", i, (int)s1[i]) + "\n"; } outputBlock.Text += divider + "\n"; outputBlock.Text += "Is each of the following pairs of characters a surrogate pair?" + "\n"; outputBlock.Text += String.Format("C1) cHigh and cLow? - {0}", Char.IsSurrogatePair(cHigh, cLow)) + "\n"; outputBlock.Text += String.Format("C2) s1[0] and s1[1]? - {0}", Char.IsSurrogatePair(s1, 0)) + "\n"; outputBlock.Text += String.Format("C3) s1[1] and s1[2]? - {0}", Char.IsSurrogatePair(s1, 1)) + "\n"; outputBlock.Text += String.Format("C4) s1[2] and s1[3]? - {0}", Char.IsSurrogatePair(s1, 2)) + "\n"; outputBlock.Text += divider + "\n"; } } /* This example produces the following results: Hexadecimal code point of the character, cHigh: D800 Hexadecimal code point of the character, cLow: DC00 Characters in string, s1: 'a', high surrogate, low surrogate, 'z' Hexadecimal code points of the characters in string, s1: s1[0] = 0061 s1[1] = D800 s1[2] = DC00 s1[3] = 007A ---------------------------------------------------------------------- Is each of the following pairs of characters a surrogate pair? C1) cHigh and cLow? - True C2) s1[0] and s1[1]? - False C3) s1[1] and s1[2]? - True C4) s1[2] and s1[3]? - False ---------------------------------------------------------------------- */