Char Struct

Definition

Representa um caractere como uma unidade de código UTF-16.Represents a character as a UTF-16 code unit.

public value class Char : IComparable, IComparable<char>, IConvertible, IEquatable<char>
public value class Char : IComparable, IConvertible
public value class Char : IComparable, IComparable<char>, IEquatable<char>
public struct Char : IComparable, IComparable<char>, IConvertible, IEquatable<char>
[System.Serializable]
public struct Char : IComparable, IConvertible
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public struct Char : IComparable, IComparable<char>, IConvertible, IEquatable<char>
public struct Char : IComparable, IComparable<char>, IEquatable<char>
type char = struct
    interface IConvertible
type char = struct
Public Structure Char
Implements IComparable, IComparable(Of Char), IConvertible, IEquatable(Of Char)
Public Structure Char
Implements IComparable, IConvertible
Public Structure Char
Implements IComparable, IComparable(Of Char), IEquatable(Of Char)
Inheritance
Attributes
Implements

Examples

O exemplo de código a seguir demonstra alguns dos métodos no Char.The following code example demonstrates some of the methods in Char.

using namespace System;
int 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' ); // Output: "x"
}

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"
    }
}
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

Remarks

O .NET usa a estrutura Char para representar pontos de código Unicode usando a codificação UTF-16..NET uses the Char structure to represent Unicode code points by using UTF-16 encoding. O valor de um objeto Char é seu valor numérico de 16 bits (ordinal).The value of a Char object is its 16-bit numeric (ordinal) value.

Se você não estiver familiarizado com Unicode, valores escalares, pontos de código, pares substitutos, UTF-16 e o tipo de Rune, consulte introdução à codificação de caracteres no .net.If you aren't familiar with Unicode, scalar values, code points, surrogate pairs, UTF-16, and the Rune type, see Introduction to character encoding in .NET.

As seções a seguir examinam a relação entre um Char objeto e um caractere e discutem algumas tarefas comuns executadas com Char instâncias.The following sections examine the relationship between a Char object and a character and discuss some common tasks performed with Char instances. Recomendamos que você considere o tipo de Rune, introduzido no .NET Core 3,0, como uma alternativa ao Char para executar algumas dessas tarefas.We recommend that you consider the Rune type, introduced in .NET Core 3.0, as an alternative to Char for performing some of these tasks.

Objetos Char, Unicode e cadeias de caracteresChar objects, Unicode characters, and strings

Um objeto String é uma coleção sequencial de estruturas Char que representa uma cadeia de caracteres de texto.A String object is a sequential collection of Char structures that represents a string of text. A maioria dos caracteres Unicode pode ser representada por um único objeto de Char, mas um caractere codificado como caractere base, par substituto e/ou sequência de caracteres de combinação é representado por vários objetos Char.Most Unicode characters can be represented by a single Char object, but a character that is encoded as a base character, surrogate pair, and/or combining character sequence is represented by multiple Char objects. Por esse motivo, uma estrutura Char em um objeto String não é necessariamente equivalente a um único caractere Unicode.For this reason, a Char structure in a String object is not necessarily equivalent to a single Unicode character.

Várias unidades de código de 16 bits são usadas para representar caracteres Unicode únicos nos seguintes casos:Multiple 16-bit code units are used to represent single Unicode characters in the following cases:

  • Glifos, que podem consistir em um único caractere ou em um caractere base seguido por um ou mais caracteres combináveis.Glyphs, which may consist of a single character or of a base character followed by one or more combining characters. Por exemplo, o caractere ä é representado por um objeto Char cuja unidade de código é U + 0061 seguido por um objeto Char cuja unidade de código é U + 0308.For example, the character ä is represented by a Char object whose code unit is U+0061 followed by a Char object whose code unit is U+0308. (O caractere ä também pode ser definido por um único objeto Char que tem uma unidade de código de U + 00E4.) O exemplo a seguir ilustra que o caractere ä consiste em dois objetos Char.(The character ä can also be defined by a single Char object that has a code unit of U+00E4.) The following example illustrates that the character ä consists of two Char objects.

    using System;
    using System.IO;
    
    public class Example
    {
       public static void Main()
       {
          StreamWriter sw = new StreamWriter("chars1.txt");
          char[] chars = { '\u0061', '\u0308' };
          string strng = new String(chars);
          sw.WriteLine(strng);
          sw.Close();
       }
    }
    // The example produces the following output:
    //       ä
    
    Imports System.IO
    
    Module Example
       Public Sub Main()
          Dim sw As New StreamWriter("chars1.txt")
          Dim chars() As Char = { ChrW(&h0061), ChrW(&h0308) }
          Dim strng As New String(chars)
          sw.WriteLine(strng) 
          sw.Close()
       End Sub
    End Module
    ' The example produces the following output:
    '       ä
    
  • Caracteres fora do plano multilíngüe básico Unicode (BMP).Characters outside the Unicode Basic Multilingual Plane (BMP). O Unicode dá suporte a dezesseis planos além do BMP, que representa o plano 0.Unicode supports sixteen planes in addition to the BMP, which represents plane 0. Um ponto de código Unicode é representado em UTF-32 por um valor de 21 bits que inclui o plano.A Unicode code point is represented in UTF-32 by a 21-bit value that includes the plane. Por exemplo, U + 1D160 representa o símbolo MUSICAL oitavo caractere de nota.For example, U+1D160 represents the MUSICAL SYMBOL EIGHTH NOTE character. Como a codificação UTF-16 tem apenas 16 bits, os caracteres fora do BMP são representados por pares substitutos em UTF-16.Because UTF-16 encoding has only 16 bits, characters outside the BMP are represented by surrogate pairs in UTF-16. O exemplo a seguir ilustra que o equivalente a UTF-32 de U + 1D160, o símbolo MUSICAL oitavo caractere de nota, é U + D834 U + DD60.The following example illustrates that the UTF-32 equivalent of U+1D160, the MUSICAL SYMBOL EIGHTH NOTE character, is U+D834 U+DD60. U + D834 é o grande substituto; intervalos de substitutos altos de U + D800 até U + DBFF.U+D834 is the high surrogate; high surrogates range from U+D800 through U+DBFF. U + DD60 é o baixo substituto; os Substitutos baixos variam de U + DC00 até U + DFFF.U+DD60 is the low surrogate; low surrogates range from U+DC00 through U+DFFF.

    using System;
    using System.IO;
    
    public class Example
    {
       public static void Main()
       {
          StreamWriter sw = new StreamWriter(@".\chars2.txt");
          int utf32 = 0x1D160;
          string surrogate = Char.ConvertFromUtf32(utf32);
          sw.WriteLine("U+{0:X6} UTF-32 = {1} ({2}) UTF-16",
                       utf32, surrogate, ShowCodePoints(surrogate));
          sw.Close();
       }
    
       private static string ShowCodePoints(string value)
       {
          string retval = null;
          foreach (var ch in value)
             retval += String.Format("U+{0:X4} ", Convert.ToUInt16(ch));
    
          return retval.Trim();
       }
    }
    // The example produces the following output:
    //       U+01D160 UTF-32 = ð (U+D834 U+DD60) UTF-16
    
    Imports System.IO
    
    Module Example
       Public Sub Main()
          Dim sw As New StreamWriter(".\chars2.txt")
          Dim utf32 As Integer = &h1D160
          Dim surrogate As String = Char.ConvertFromUtf32(utf32)
          sw.WriteLine("U+{0:X6} UTF-32 = {1} ({2}) UTF-16", 
                       utf32, surrogate, ShowCodePoints(surrogate))
          sw.Close()                    
       End Sub
    
       Private Function ShowCodePoints(value As String) As String
          Dim retval As String = Nothing
          For Each ch In value
             retval += String.Format("U+{0:X4} ", Convert.ToUInt16(ch))
          Next
          Return retval.Trim()
       End Function
    End Module
    ' The example produces the following output:
    '       U+01D160 UTF-32 = ð (U+D834 U+DD60) UTF-16
    

Caracteres e categorias de caracteresCharacters and character categories

Cada caractere Unicode ou par substituto válido pertence a uma categoria Unicode.Each Unicode character or valid surrogate pair belongs to a Unicode category. Na .NET Framework, as categorias Unicode são representadas por membros da enumeração UnicodeCategory e incluem valores como UnicodeCategory.CurrencySymbol, UnicodeCategory.LowercaseLettere UnicodeCategory.SpaceSeparator, por exemplo.In the .NET Framework, Unicode categories are represented by members of the UnicodeCategory enumeration and include values such as UnicodeCategory.CurrencySymbol, UnicodeCategory.LowercaseLetter, and UnicodeCategory.SpaceSeparator, for example.

Para determinar a categoria Unicode de um caractere, chame o método GetUnicodeCategory.To determine the Unicode category of a character, call the GetUnicodeCategory method. Por exemplo, o exemplo a seguir chama o GetUnicodeCategory para exibir a categoria Unicode de cada caractere em uma cadeia de caracteres.For example, the following example calls the GetUnicodeCategory to display the Unicode category of each character in a string. O exemplo funcionará corretamente apenas se não houver pares substitutos na instância de String.The example works correctly only if there are no surrogate pairs in the String instance.

using System;
using System.Globalization;

class Example
{
   public static void Main()
   {
      // Define a string with a variety of character categories.
      String s = "The red car drove down the long, narrow, secluded road.";
      // Determine the category of each character.
      foreach (var ch in s)
         Console.WriteLine("'{0}': {1}", ch, Char.GetUnicodeCategory(ch));
   }
}
// The example displays the following output:
//      'T': UppercaseLetter
//      'h': LowercaseLetter
//      'e': LowercaseLetter
//      ' ': SpaceSeparator
//      'r': LowercaseLetter
//      'e': LowercaseLetter
//      'd': LowercaseLetter
//      ' ': SpaceSeparator
//      'c': LowercaseLetter
//      'a': LowercaseLetter
//      'r': LowercaseLetter
//      ' ': SpaceSeparator
//      'd': LowercaseLetter
//      'r': LowercaseLetter
//      'o': LowercaseLetter
//      'v': LowercaseLetter
//      'e': LowercaseLetter
//      ' ': SpaceSeparator
//      'd': LowercaseLetter
//      'o': LowercaseLetter
//      'w': LowercaseLetter
//      'n': LowercaseLetter
//      ' ': SpaceSeparator
//      't': LowercaseLetter
//      'h': LowercaseLetter
//      'e': LowercaseLetter
//      ' ': SpaceSeparator
//      'l': LowercaseLetter
//      'o': LowercaseLetter
//      'n': LowercaseLetter
//      'g': LowercaseLetter
//      ',': OtherPunctuation
//      ' ': SpaceSeparator
//      'n': LowercaseLetter
//      'a': LowercaseLetter
//      'r': LowercaseLetter
//      'r': LowercaseLetter
//      'o': LowercaseLetter
//      'w': LowercaseLetter
//      ',': OtherPunctuation
//      ' ': SpaceSeparator
//      's': LowercaseLetter
//      'e': LowercaseLetter
//      'c': LowercaseLetter
//      'l': LowercaseLetter
//      'u': LowercaseLetter
//      'd': LowercaseLetter
//      'e': LowercaseLetter
//      'd': LowercaseLetter
//      ' ': SpaceSeparator
//      'r': LowercaseLetter
//      'o': LowercaseLetter
//      'a': LowercaseLetter
//      'd': LowercaseLetter
//      '.': OtherPunctuation
Imports System.Globalization

Module Example
   Public Sub Main()
      ' Define a string with a variety of character categories.
      Dim s As String = "The car drove down the narrow, secluded road."
      ' Determine the category of each character.
      For Each ch In s
         Console.WriteLine("'{0}': {1}", ch, Char.GetUnicodeCategory(ch)) 
      Next
   End Sub
End Module
' The example displays the following output:
'       'T': UppercaseLetter
'       'h': LowercaseLetter
'       'e': LowercaseLetter
'       ' ': SpaceSeparator
'       'r': LowercaseLetter
'       'e': LowercaseLetter
'       'd': LowercaseLetter
'       ' ': SpaceSeparator
'       'c': LowercaseLetter
'       'a': LowercaseLetter
'       'r': LowercaseLetter
'       ' ': SpaceSeparator
'       'd': LowercaseLetter
'       'r': LowercaseLetter
'       'o': LowercaseLetter
'       'v': LowercaseLetter
'       'e': LowercaseLetter
'       ' ': SpaceSeparator
'       'd': LowercaseLetter
'       'o': LowercaseLetter
'       'w': LowercaseLetter
'       'n': LowercaseLetter
'       ' ': SpaceSeparator
'       't': LowercaseLetter
'       'h': LowercaseLetter
'       'e': LowercaseLetter
'       ' ': SpaceSeparator
'       'l': LowercaseLetter
'       'o': LowercaseLetter
'       'n': LowercaseLetter
'       'g': LowercaseLetter
'       ',': OtherPunctuation
'       ' ': SpaceSeparator
'       'n': LowercaseLetter
'       'a': LowercaseLetter
'       'r': LowercaseLetter
'       'r': LowercaseLetter
'       'o': LowercaseLetter
'       'w': LowercaseLetter
'       ',': OtherPunctuation
'       ' ': SpaceSeparator
'       's': LowercaseLetter
'       'e': LowercaseLetter
'       'c': LowercaseLetter
'       'l': LowercaseLetter
'       'u': LowercaseLetter
'       'd': LowercaseLetter
'       'e': LowercaseLetter
'       'd': LowercaseLetter
'       ' ': SpaceSeparator
'       'r': LowercaseLetter
'       'o': LowercaseLetter
'       'a': LowercaseLetter
'       'd': LowercaseLetter
'       '.': OtherPunctuation

Internamente, para caracteres fora do intervalo ASCII (U + 0000 a U + 00FF), o método GetUnicodeCategory depende das categorias Unicode relatadas pela classe CharUnicodeInfo.Internally, for characters outside the ASCII range (U+0000 through U+00FF), the GetUnicodeCategory method depends on Unicode categories reported by the CharUnicodeInfo class. A partir do .NET Framework 4.6.2.NET Framework 4.6.2, os caracteres Unicode são classificados com base no padrão Unicode, versão 8.0.0.Starting with the .NET Framework 4.6.2.NET Framework 4.6.2, Unicode characters are classified based on The Unicode Standard, Version 8.0.0. Em versões do .NET Framework da .NET Framework 4.NET Framework 4 para a .NET Framework 4.6.1.NET Framework 4.6.1, elas são classificadas com base no padrão Unicode, versão 6.3.0.In versions of the .NET Framework from the .NET Framework 4.NET Framework 4 to the .NET Framework 4.6.1.NET Framework 4.6.1, they are classified based on The Unicode Standard, Version 6.3.0.

Caracteres e elementos de textoCharacters and text elements

Como um único caractere pode ser representado por vários objetos Char, nem sempre é significativo trabalhar com objetos Char individuais.Because a single character can be represented by multiple Char objects, it is not always meaningful to work with individual Char objects. Por exemplo, os seguintes exemplos convertem os pontos de código Unicode que representam os números de Aegean de zero a 9 para unidades de código codificadas em UTF-16.For instance, the following example converts the Unicode code points that represent the Aegean numbers zero through 9 to UTF-16 encoded code units. Como ele se equipara erroneamente a Char objetos com caracteres, ele relata incorretamente que a cadeia de caracteres resultante tem 20 caracteres.Because it erroneously equates Char objects with characters, it inaccurately reports that the resulting string has 20 characters.

using System;

public class Example
{
   public static void Main()
   {
      string result = String.Empty;
      for (int ctr = 0x10107; ctr <= 0x10110; ctr++)  // Range of Aegean numbers.
         result += Char.ConvertFromUtf32(ctr);

      Console.WriteLine("The string contains {0} characters.", result.Length);
   }
}
// The example displays the following output:
//     The string contains 20 characters.
Module Example
   Public Sub Main()
      Dim result As String = String.Empty
      For ctr As Integer = &h10107 To &h10110     ' Range of Aegean numbers.
         result += Char.ConvertFromUtf32(ctr)
      Next         
      Console.WriteLine("The string contains {0} characters.", result.Length) 
   End Sub
End Module
' The example displays the following output:
'     The string contains 20 characters.

Você pode fazer o seguinte para evitar a suposição de que um objeto Char representa um único caractere.You can do the following to avoid the assumption that a Char object represents a single character.

  • Você pode trabalhar com um objeto String em sua totalidade, em vez de trabalhar com seus caracteres individuais para representar e analisar conteúdo linguístico.You can work with a String object in its entirety instead of working with its individual characters to represent and analyze linguistic content.

  • Você pode usar String.EnumerateRunes conforme mostrado no exemplo a seguir:You can use String.EnumerateRunes as shown in the following example:

    int CountLetters(string s)
    {
        int letterCount = 0;
    
        foreach (Rune rune in s.EnumerateRunes())
        {
            if (Rune.IsLetter(rune))
            { letterCount++; }
        }
    
        return letterCount;
    }
    
  • Você pode usar a classe StringInfo para trabalhar com elementos de texto em vez de objetos Char individuais.You can use the StringInfo class to work with text elements instead of individual Char objects. O exemplo a seguir usa o objeto StringInfo para contar o número de elementos Text em uma cadeia de caracteres que consiste nos números de Aegean de zero a nove.The following example uses the StringInfo object to count the number of text elements in a string that consists of the Aegean numbers zero through nine. Como ele considera um par substituto um caractere único, ele relata corretamente que a cadeia de caracteres contém dez caracteres.Because it considers a surrogate pair a single character, it correctly reports that the string contains ten characters.

    using System;
    using System.Globalization;
    
    public class Example
    {
       public static void Main()
       {
          string result = String.Empty;
          for (int ctr = 0x10107; ctr <= 0x10110; ctr++)  // Range of Aegean numbers.
             result += Char.ConvertFromUtf32(ctr);
    
          StringInfo si = new StringInfo(result);
          Console.WriteLine("The string contains {0} characters.",
                            si.LengthInTextElements);
       }
    }
    // The example displays the following output:
    //       The string contains 10 characters.
    
    Imports System.Globalization
    
    Module Example
       Public Sub Main()
          Dim result As String = String.Empty
          For ctr As Integer = &h10107 To &h10110     ' Range of Aegean numbers.
             result += Char.ConvertFromUtf32(ctr)
          Next         
          Dim si As New StringInfo(result)
          Console.WriteLine("The string contains {0} characters.", si.LengthInTextElements) 
       End Sub
    End Module
    ' The example displays the following output:
    '       The string contains 10 characters.
    
  • Se uma cadeia de caracteres contiver um caractere base que tenha um ou mais caracteres combináveis, você poderá chamar o método String.Normalize para converter a subcadeia de caracteres em uma única unidade de código codificada em UTF-16.If a string contains a base character that has one or more combining characters, you can call the String.Normalize method to convert the substring to a single UTF-16 encoded code unit. O exemplo a seguir chama o método String.Normalize para converter o caractere base U + 0061 (letra latina minúscula A) e a combinação do caractere U + 0308 (trema COMBINÁvel) para U + 00E4 (letra latina minúscula A com trema).The following example calls the String.Normalize method to convert the base character U+0061 (LATIN SMALL LETTER A) and combining character U+0308 (COMBINING DIAERESIS) to U+00E4 (LATIN SMALL LETTER A WITH DIAERESIS).

    using System;
    
    public class Example
    {
       public static void Main()
       {
          string combining = "\u0061\u0308";
          ShowString(combining);
    
          string normalized = combining.Normalize();
          ShowString(normalized);
       }
    
       private static void ShowString(string s)
       {
          Console.Write("Length of string: {0} (", s.Length);
          for (int ctr = 0; ctr < s.Length; ctr++) {
             Console.Write("U+{0:X4}", Convert.ToUInt16(s[ctr]));
             if (ctr != s.Length - 1) Console.Write(" ");
          }
          Console.WriteLine(")\n");
       }
    }
    // The example displays the following output:
    //       Length of string: 2 (U+0061 U+0308)
    //
    //       Length of string: 1 (U+00E4)
    
    Module Example
       Public Sub Main()
          Dim combining As String = ChrW(&h0061) + ChrW(&h0308)
          ShowString(combining)
          
          Dim normalized As String = combining.Normalize()
          ShowString(normalized)
       End Sub
       
       Private Sub ShowString(s As String)
          Console.Write("Length of string: {0} (", s.Length)
          For ctr As Integer = 0 To s.Length - 1
             Console.Write("U+{0:X4}", Convert.ToUInt16(s(ctr)))
             If ctr <> s.Length - 1 Then Console.Write(" ")
          Next 
          Console.WriteLine(")")
          Console.WriteLine()
       End Sub
    End Module
    ' The example displays the following output:
    '       Length of string: 2 (U+0061 U+0308)
    '       
    '       Length of string: 1 (U+00E4)
    

Operações comunsCommon operations

A estrutura de Char fornece métodos para comparar Char objetos, converter o valor do objeto de Char atual em um objeto de outro tipo e determinar a categoria Unicode de um objeto Char:The Char structure provides methods to compare Char objects, convert the value of the current Char object to an object of another type, and determine the Unicode category of a Char object:

Para fazer istoTo do this Usar estes System.Char métodosUse these System.Char methods
Comparar objetos CharCompare Char objects CompareTo e EqualsCompareTo and Equals
Converter um ponto de código em uma cadeia de caracteresConvert a code point to a string ConvertFromUtf32

Consulte também o tipo de Rune.See also the Rune type.
Converter um objeto Char ou um par substituto de objetos Char em um ponto de códigoConvert a Char object or a surrogate pair of Char objects to a code point Para um único caractere: Convert.ToInt32(Char)For a single character: Convert.ToInt32(Char)

Para um par alternativo ou um caractere em uma cadeia de caracteres: Char.ConvertToUtf32For a surrogate pair or a character in a string: Char.ConvertToUtf32

Consulte também o tipo de Rune.See also the Rune type.
Obter a categoria Unicode de um caractereGet the Unicode category of a character GetUnicodeCategory

Consulte também Rune.GetUnicodeCategory.See also Rune.GetUnicodeCategory.
Determinar se um caractere está em uma categoria Unicode específica, como dígito, letra, pontuação, caractere de controle e assim por dianteDetermine whether a character is in a particular Unicode category such as digit, letter, punctuation, control character, and so on IsControl, IsDigit, IsHighSurrogate, IsLetter, IsLetterOrDigit, IsLower, IsLowSurrogate, IsNumber, IsPunctuation, IsSeparator, IsSurrogate, IsSurrogatePair, IsSymbol, IsUppere IsWhiteSpaceIsControl, IsDigit, IsHighSurrogate, IsLetter, IsLetterOrDigit, IsLower, IsLowSurrogate, IsNumber, IsPunctuation, IsSeparator, IsSurrogate, IsSurrogatePair, IsSymbol, IsUpper, and IsWhiteSpace

Consulte também os métodos correspondentes no tipo de Rune.See also corresponding methods on the Rune type.
Converter um objeto Char que representa um número para um tipo de valor numéricoConvert a Char object that represents a number to a numeric value type GetNumericValue

Consulte também Rune.GetNumericValue.See also Rune.GetNumericValue.
Converter um caractere em uma cadeia de caracteres em um objeto CharConvert a character in a string into a Char object Parse e TryParseParse and TryParse
Converter um objeto Char em um objeto StringConvert a Char object to a String object ToString
Alterar o caso de um objeto CharChange the case of a Char object ToLower, ToLowerInvariant, ToUpper e ToUpperInvariantToLower, ToLowerInvariant, ToUpper, and ToUpperInvariant

Consulte também os métodos correspondentes no tipo de Rune.See also corresponding methods on the Rune type.

Valores de caracteres e interoperabilidadeChar values and interop

Quando um tipo de Char gerenciado, que é representado como uma unidade de código codificada Unicode UTF-16, é passado para um código não gerenciado, o marshaler de interoperabilidade converte o conjunto de caracteres em ANSI por padrão.When a managed Char type, which is represented as a Unicode UTF-16 encoded code unit, is passed to unmanaged code, the interop marshaler converts the character set to ANSI by default. Você pode aplicar o atributo DllImportAttribute às declarações de invocação de plataforma e o atributo StructLayoutAttribute a uma declaração de interoperabilidade COM para controlar qual conjunto de caracteres um tipo de Char com marshaling usa.You can apply the DllImportAttribute attribute to platform invoke declarations and the StructLayoutAttribute attribute to a COM interop declaration to control which character set a marshaled Char type uses.

Fields

MaxValue

Representa o maior valor possível de um Char.Represents the largest possible value of a Char. Esse campo é constante.This field is constant.

MinValue

Representa o menor valor possível de um Char.Represents the smallest possible value of a Char. Esse campo é constante.This field is constant.

Methods

CompareTo(Char)

Compara essa instância com um objeto Char especificado e indica se a instância precede, segue ou aparece na mesma posição na ordem de classificação que o objeto Char especificado.Compares this instance to a specified Char object and indicates whether this instance precedes, follows, or appears in the same position in the sort order as the specified Char object.

CompareTo(Object)

Compara essa instância com um objeto especificado e indica se a instância precede, segue ou aparece na mesma posição na ordem de classificação que o Object especificado.Compares this instance to a specified object and indicates whether this instance precedes, follows, or appears in the same position in the sort order as the specified Object.

ConvertFromUtf32(Int32)

Converte o ponto de código Unicode especificado em uma cadeia de caracteres codificada para UTF-16.Converts the specified Unicode code point into a UTF-16 encoded string.

ConvertToUtf32(Char, Char)

Converte o valor de um par alternativo do UTF-16 codificado em um ponto de código Unicode.Converts the value of a UTF-16 encoded surrogate pair into a Unicode code point.

ConvertToUtf32(String, Int32)

Converte o valor de um par substituto ou caractere codificado em UTF-16 em uma posição especificada em uma cadeia de caracteres em um ponto de código Unicode.Converts the value of a UTF-16 encoded character or surrogate pair at a specified position in a string into a Unicode code point.

Equals(Char)

Retorna um valor que indica se esta instância é igual ao objeto Char especificado.Returns a value that indicates whether this instance is equal to the specified Char object.

Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.Returns a value that indicates whether this instance is equal to a specified object.

GetHashCode()

Retorna o código hash desta instância.Returns the hash code for this instance.

GetNumericValue(Char)

Converte o caractere Unicode numérico especificado em um número de ponto flutuante de precisão dupla.Converts the specified numeric Unicode character to a double-precision floating point number.

GetNumericValue(String, Int32)

Converte o caractere Unicode numérico na posição especificada contido em uma cadeia de caracteres especificada em um número de ponto flutuante de precisão dupla.Converts the numeric Unicode character at the specified position in a specified string to a double-precision floating point number.

GetTypeCode()

Retorna o TypeCode para tipo de valor Char.Returns the TypeCode for value type Char.

GetUnicodeCategory(Char)

Categoriza um caractere Unicode especificado em um grupo identificado por um dos valores de UnicodeCategory.Categorizes a specified Unicode character into a group identified by one of the UnicodeCategory values.

GetUnicodeCategory(String, Int32)

Categoriza o caractere na posição especificada em uma cadeia de caracteres especificada em um grupo identificado por um dos valores de UnicodeCategory.Categorizes the character at the specified position in a specified string into a group identified by one of the UnicodeCategory values.

IsControl(Char)

Indica se o caractere Unicode especificado é categorizado como um caractere de controle.Indicates whether the specified Unicode character is categorized as a control character.

IsControl(String, Int32)

Indica se o caractere na posição especificada em uma cadeia de caracteres especificada é categorizado como um caractere de controle.Indicates whether the character at the specified position in a specified string is categorized as a control character.

IsDigit(Char)

Indica se o caractere Unicode especificado é categorizado como um dígito decimal.Indicates whether the specified Unicode character is categorized as a decimal digit.

IsDigit(String, Int32)

Indica se o caractere na posição especificada em uma cadeia de caracteres especificada é categorizado como um dígito decimal.Indicates whether the character at the specified position in a specified string is categorized as a decimal digit.

IsHighSurrogate(Char)

Indica se o objeto Char especificado é um alternativo alto.Indicates whether the specified Char object is a high surrogate.

IsHighSurrogate(String, Int32)

Indica se o objeto Char na posição especificada em uma cadeia de caracteres é um substituto alto.Indicates whether the Char object at the specified position in a string is a high surrogate.

IsLetter(Char)

Indica se o caractere Unicode especificado é categorizado como uma letra de Unicode.Indicates whether the specified Unicode character is categorized as a Unicode letter.

IsLetter(String, Int32)

Indica se o caractere na posição especificada em uma cadeia de caracteres especificada é categorizado como uma letra Unicode.Indicates whether the character at the specified position in a specified string is categorized as a Unicode letter.

IsLetterOrDigit(Char)

Indica se o caractere Unicode especificado é categorizado como uma letra ou dígito decimal.Indicates whether the specified Unicode character is categorized as a letter or a decimal digit.

IsLetterOrDigit(String, Int32)

Indica se o caractere na posição especificada em uma cadeia de caracteres especificada é categorizado como uma letra ou um dígito decimal.Indicates whether the character at the specified position in a specified string is categorized as a letter or a decimal digit.

IsLower(Char)

Indica se o caractere Unicode especificado é categorizado como uma letra minúscula.Indicates whether the specified Unicode character is categorized as a lowercase letter.

IsLower(String, Int32)

Indica se o caractere na posição especificada em uma cadeia de caracteres especificada é categorizado como uma letra maiúscula.Indicates whether the character at the specified position in a specified string is categorized as a lowercase letter.

IsLowSurrogate(Char)

Indica se o objeto Char especificado é um alternativo baixo.Indicates whether the specified Char object is a low surrogate.

IsLowSurrogate(String, Int32)

Indica se o objeto Char na posição especificada em uma cadeia de caracteres é um substituto baixo.Indicates whether the Char object at the specified position in a string is a low surrogate.

IsNumber(Char)

Indica se o caractere Unicode especificado é categorizado como um número.Indicates whether the specified Unicode character is categorized as a number.

IsNumber(String, Int32)

Indica se o caractere na posição especificada em uma cadeia de caracteres especificada é categorizado como um número.Indicates whether the character at the specified position in a specified string is categorized as a number.

IsPunctuation(Char)

Indica se o caractere Unicode especificado é categorizado como uma marca de pontuação.Indicates whether the specified Unicode character is categorized as a punctuation mark.

IsPunctuation(String, Int32)

Indica se o caractere na posição especificada em uma cadeia de caracteres especificada é categorizado como uma marca de pontuação.Indicates whether the character at the specified position in a specified string is categorized as a punctuation mark.

IsSeparator(Char)

Indica se o caractere Unicode especificado é categorizado como um caractere separador.Indicates whether the specified Unicode character is categorized as a separator character.

IsSeparator(String, Int32)

Indica se o caractere na posição especificada em uma cadeia de caracteres especificada é categorizado como um caractere separador.Indicates whether the character at the specified position in a specified string is categorized as a separator character.

IsSurrogate(Char)

Indica se o caractere especificado tem uma unidade de código substituta.Indicates whether the specified character has a surrogate code unit.

IsSurrogate(String, Int32)

Indica se o caractere na posição especificada em uma cadeia de caracteres especificada tem uma unidade de código de substituto.Indicates whether the character at the specified position in a specified string has a surrogate code unit.

IsSurrogatePair(Char, Char)

Indica se os dois objetos Char especificados formam um par substituto.Indicates whether the two specified Char objects form a surrogate pair.

IsSurrogatePair(String, Int32)

Indica se dois objetos Char adjacentes em uma posição especificada em uma cadeia de caracteres formam um par alternativo.Indicates whether two adjacent Char objects at a specified position in a string form a surrogate pair.

IsSymbol(Char)

Indica se o caractere Unicode especificado é categorizado como um caractere de símbolo.Indicates whether the specified Unicode character is categorized as a symbol character.

IsSymbol(String, Int32)

Indica se o caractere na posição especificada em uma cadeia de caracteres especificada é categorizado como um caractere de símbolo.Indicates whether the character at the specified position in a specified string is categorized as a symbol character.

IsUpper(Char)

Indica se o caractere Unicode especificado é categorizado como uma letra maiúscula.Indicates whether the specified Unicode character is categorized as an uppercase letter.

IsUpper(String, Int32)

Indica se o caractere na posição especificada em uma cadeia de caracteres especificada é categorizado como uma letra maiúscula.Indicates whether the character at the specified position in a specified string is categorized as an uppercase letter.

IsWhiteSpace(Char)

Indica se o caractere Unicode especificado é categorizado como um espaço em branco.Indicates whether the specified Unicode character is categorized as white space.

IsWhiteSpace(String, Int32)

Indica se o caractere na posição especificada em uma cadeia de caracteres especificada é categorizado como espaços em branco.Indicates whether the character at the specified position in a specified string is categorized as white space.

Parse(String)

Converte o valor da cadeia de caracteres especificada em seu caractere Unicode equivalente.Converts the value of the specified string to its equivalent Unicode character.

ToLower(Char)

Converte o valor de um caractere Unicode em seu equivalente em minúsculas.Converts the value of a Unicode character to its lowercase equivalent.

ToLower(Char, CultureInfo)

Converte o valor de um caractere Unicode especificado no equivalente em minúsculas usando as informações de formatação específicas à cultura especificadas.Converts the value of a specified Unicode character to its lowercase equivalent using specified culture-specific formatting information.

ToLowerInvariant(Char)

Converte o valor de um caractere Unicode para seu equivalente em minúsculas usando as regras de maiúsculas e minúsculas da cultura invariável.Converts the value of a Unicode character to its lowercase equivalent using the casing rules of the invariant culture.

ToString()

Converte o valor dessa instância na representação da cadeia de caracteres equivalente.Converts the value of this instance to its equivalent string representation.

ToString(Char)

Converte o caractere Unicode especificado na representação de cadeia de caracteres equivalente.Converts the specified Unicode character to its equivalent string representation.

ToString(IFormatProvider)

Converte o valor dessa instância na representação da cadeia de caracteres equivalente usando as informações de formato específicas da cultura especificada.Converts the value of this instance to its equivalent string representation using the specified culture-specific format information.

ToUpper(Char)

Converte o valor de um caractere Unicode para seu equivalente em maiúsculas.Converts the value of a Unicode character to its uppercase equivalent.

ToUpper(Char, CultureInfo)

Converte o valor de um caractere Unicode especificado em seu equivalente em letras maiúsculas usando as informações de formatação específicas à cultura especificadas.Converts the value of a specified Unicode character to its uppercase equivalent using specified culture-specific formatting information.

ToUpperInvariant(Char)

Converte o valor de um caractere Unicode para seu equivalente em maiúsculas usando as regras de maiúsculas e minúsculas da cultura invariável.Converts the value of a Unicode character to its uppercase equivalent using the casing rules of the invariant culture.

TryParse(String, Char)

Converte o valor da cadeia de caracteres especificada em seu caractere Unicode equivalente.Converts the value of the specified string to its equivalent Unicode character. Um código de retorno indica se a conversão foi bem-sucedida ou falhou.A return code indicates whether the conversion succeeded or failed.

Explicit Interface Implementations

IComparable.CompareTo(Object)

Compara a instância atual com outro objeto do mesmo tipo e retorna um inteiro que indica se a instância atual precede, segue ou ocorre na mesma posição da ordem de classificação do outro objeto.Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object.

IConvertible.GetTypeCode()

Retorna o TypeCode para essa instância.Returns the TypeCode for this instance.

IConvertible.ToBoolean(IFormatProvider)

Observação Não há suporte para esta conversão.Note This conversion is not supported. A tentativa de fazer isso lança um InvalidCastException.Attempting to do so throws an InvalidCastException.

IConvertible.ToByte(IFormatProvider)

Para obter uma descrição desse membro, consulte ToByte(IFormatProvider).For a description of this member, see ToByte(IFormatProvider).

IConvertible.ToChar(IFormatProvider)

Para obter uma descrição desse membro, consulte ToChar(IFormatProvider).For a description of this member, see ToChar(IFormatProvider).

IConvertible.ToDateTime(IFormatProvider)

Observação Não há suporte para esta conversão.Note This conversion is not supported. A tentativa de fazer isso lança um InvalidCastException.Attempting to do so throws an InvalidCastException.

IConvertible.ToDecimal(IFormatProvider)

Observação Não há suporte para esta conversão.Note This conversion is not supported. A tentativa de fazer isso lança um InvalidCastException.Attempting to do so throws an InvalidCastException.

IConvertible.ToDouble(IFormatProvider)

Observação Não há suporte para esta conversão.Note This conversion is not supported. A tentativa de fazer isso lança um InvalidCastException.Attempting to do so throws an InvalidCastException.

IConvertible.ToInt16(IFormatProvider)

Para obter uma descrição desse membro, consulte ToInt16(IFormatProvider).For a description of this member, see ToInt16(IFormatProvider).

IConvertible.ToInt32(IFormatProvider)

Para obter uma descrição desse membro, consulte ToInt32(IFormatProvider).For a description of this member, see ToInt32(IFormatProvider).

IConvertible.ToInt64(IFormatProvider)

Para obter uma descrição desse membro, consulte ToInt64(IFormatProvider).For a description of this member, see ToInt64(IFormatProvider).

IConvertible.ToSByte(IFormatProvider)

Para obter uma descrição desse membro, consulte ToSByte(IFormatProvider).For a description of this member, see ToSByte(IFormatProvider).

IConvertible.ToSingle(IFormatProvider)

Observação Não há suporte para esta conversão.Note This conversion is not supported. A tentativa de fazer isso lança um InvalidCastException.Attempting to do so throws an InvalidCastException.

IConvertible.ToString(IFormatProvider)

Converte o valor dessa instância em uma cadeia de caracteres equivalente, usando as informações de formatação específicas da cultura especificadas.Converts the value of this instance to an equivalent string, using the specified culture-specific formatting information.

IConvertible.ToType(Type, IFormatProvider)

Para obter uma descrição desse membro, consulte ToType(Type, IFormatProvider).For a description of this member, see ToType(Type, IFormatProvider).

IConvertible.ToUInt16(IFormatProvider)

Para obter uma descrição desse membro, consulte ToUInt16(IFormatProvider).For a description of this member, see ToUInt16(IFormatProvider).

IConvertible.ToUInt32(IFormatProvider)

Para obter uma descrição desse membro, consulte ToUInt32(IFormatProvider).For a description of this member, see ToUInt32(IFormatProvider).

IConvertible.ToUInt64(IFormatProvider)

Para obter uma descrição desse membro, consulte ToUInt64(IFormatProvider).For a description of this member, see ToUInt64(IFormatProvider).

Applies to

Thread Safety

Todos os membros desse tipo são thread-safe.All members of this type are thread safe. Os membros que aparentam modificar efetivamente o estado retornam uma nova instância inicializada com o novo valor.Members that appear to modify instance state actually return a new instance initialized with the new value. Assim como acontece com qualquer outro tipo, a leitura e a gravação em uma variável compartilhada que contém uma instância desse tipo devem ser protegidas por um bloqueio para garantir thread-safe.As with any other type, reading and writing to a shared variable that contains an instance of this type must be protected by a lock to guarantee thread safety.

See also