This documentation is archived and is not being maintained.

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