Windows apps
Collapse the table of content
Expand the table of content
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

Char Structure

Represents a Unicode character.

For a list of all members of this type, see Char Members.


[Visual Basic]
Public Structure Char
   Implements IComparable, IConvertible
public struct Char : IComparable, IConvertible
public __value struct Char : public IComparable, IConvertible

[JScript] In JScript, you can use the structures in the .NET Framework, but you cannot define your own.

Thread Safety

This type is safe for multithreaded operations.


The Char value type represents a Unicode character, also called a Unicode code point, and is implemented as a 16-bit number ranging in value from hexadecimal 0x0000 to 0xFFFF. A single Char cannot represent a Unicode character that is encoded as a surrogate pair. However, a String, which is a collection of Char objects, can represent a Unicode character encoded as a surrogate pair.

For more information about Unicode, see the Unicode Standard at .

Char provides methods to compare instances of this type, convert the value of an instance to its string representation, convert the string representation of a number to an instance of this type, and determine whether an instance is in a category such as digit, letter, punctuation, control character, and so on. For information about how format specification codes control the string representation of value types, see Formatting Overview.

As a general principle, class members in the .NET Framework that take or return a Char operate on the numeric (ordinal) value of the Char. Class members that take or return a String operate on the linguistic value of the string, including handling surrogate pairs. For this reason, a Char is not necessarily equivalent to an individual character in a String.

This type implements the IComparable interface and the IConvertible interface. Use the Convert class for conversions instead of this type's explicit interface member implementation of IConvertible.


[Visual Basic, C#, C++] The following sample demonstrates some of the methods in Char.

[Visual Basic] 
imports System

Module CharStructure

    Public Sub Main()

        Dim chA As Char
        chA = "A"c
        Dim ch1 As Char
        ch1 = "1"c
        Dim str As String
        str = "test string"

        Console.WriteLine(chA.CompareTo("B"c))          ' Output: "-1" (meaning 'A' is 1 less than 'B')
        Console.WriteLine(chA.Equals("A"c))             ' Output: "True"
        Console.WriteLine(Char.GetNumericValue(ch1))    ' Output: "1"
        Console.WriteLine(Char.IsControl(Chr(9)))       ' Output: "True"
        Console.WriteLine(Char.IsDigit(ch1))            ' Output: "True"
        Console.WriteLine(Char.IsLetter(","c))          ' Output: "False"
        Console.WriteLine(Char.IsLower("u"c))           ' Output: "True"
        Console.WriteLine(Char.IsNumber(ch1))           ' Output: "True"
        Console.WriteLine(Char.IsPunctuation("."c))     ' Output: "True"
        Console.WriteLine(Char.IsSeparator(str, 4))     ' Output: "True"
        Console.WriteLine(Char.IsSymbol("+"c))          ' Output: "True"
        Console.WriteLine(Char.IsWhiteSpace(str, 4))    ' Output: "True"
        Console.WriteLine(Char.Parse("S"))              ' Output: "S"
        Console.WriteLine(Char.ToLower("M"c))           ' Output: "m"
        Console.WriteLine("x"c.ToString())              ' Output: "x"

    End Sub

End Module

using System;

public class CharStructureSample {
    public static void Main() {
        char chA = 'A';
        char ch1 = '1';
        string str = "test string"; 

        Console.WriteLine(chA.CompareTo('B'));            // Output: "-1" (meaning 'A' is 1 less than 'B')
        Console.WriteLine(chA.Equals('A'));                // Output: "True"
        Console.WriteLine(Char.GetNumericValue(ch1));    // Output: "1"
        Console.WriteLine(Char.IsControl('\t'));        // Output: "True"
        Console.WriteLine(Char.IsDigit(ch1));            // Output: "True"
        Console.WriteLine(Char.IsLetter(','));            // Output: "False"
        Console.WriteLine(Char.IsLower('u'));            // Output: "True"
        Console.WriteLine(Char.IsNumber(ch1));            // Output: "True"
        Console.WriteLine(Char.IsPunctuation('.'));        // Output: "True"
        Console.WriteLine(Char.IsSeparator(str, 4));    // Output: "True"
        Console.WriteLine(Char.IsSymbol('+'));            // Output: "True"
        Console.WriteLine(Char.IsWhiteSpace(str, 4));    // Output: "True"
        Console.WriteLine(Char.Parse("S"));                // Output: "S"
        Console.WriteLine(Char.ToLower('M'));            // Output: "m"
        Console.WriteLine('x'.ToString());                // Output: "x"

#using <mscorlib.dll>
using namespace System;

int main() {
   char chA = 'A';
   char ch1 = '1';
   String* str = "test string"; 

   Console::WriteLine(chA.CompareTo(__box('B'))); // Output: "-1" (meaning 'A' is 1 less than 'B')
   Console::WriteLine(chA.Equals(__box('A')));    // Output: "True"
   Console::WriteLine(Char::GetNumericValue(ch1));// Output: "1"
   Console::WriteLine(Char::IsControl('\t'));     // Output: "True"
   Console::WriteLine(Char::IsDigit(ch1));        // Output: "True"
   Console::WriteLine(Char::IsLetter(','));       // Output: "False"
   Console::WriteLine(Char::IsLower('u'));        // Output: "True"
   Console::WriteLine(Char::IsNumber(ch1));       // Output: "True"
   Console::WriteLine(Char::IsPunctuation('.'));  // Output: "True"
   Console::WriteLine(Char::IsSeparator(str, 4)); // Output: "True"
   Console::WriteLine(Char::IsSymbol('+'));       // Output: "True"
   Console::WriteLine(Char::IsWhiteSpace(str, 4));// Output: "True"
   Console::WriteLine(Char::Parse("S"));          // Output: "S"
   Console::WriteLine(Char::ToLower('M'));        // Output: "m"
   Console::WriteLine(__box('x'));                // Output: "x"

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.


Namespace: System

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework

Assembly: Mscorlib (in Mscorlib.dll)

See Also

Char Members | System Namespace | IComparable | IConvertible | String

© 2018 Microsoft