Char Struktura

Definicja

Reprezentuje znak jako jednostkę kodu 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.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public struct Char : IComparable, IComparable<char>, IConvertible, IEquatable<char>
public struct Char : IComparable, IComparable<char>, IEquatable<char>
type char = struct
    interface IConvertible
[<System.Serializable>]
type char = struct
    interface IConvertible
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
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)
Dziedziczenie
Atrybuty
Implementuje

Przykłady

Poniższy przykład kodu demonstruje niektóre metody w 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

Uwagi

Platforma .NET używa Char struktury do reprezentowania punktów kodu Unicode przy użyciu kodowania UTF-16..NET uses the Char structure to represent Unicode code points by using UTF-16 encoding. Wartość Char obiektu jest jego 16-bitową wartością liczbową (porządkową).The value of a Char object is its 16-bit numeric (ordinal) value.

Jeśli nie znasz opcji Unicode, wartości skalarnych, punktów kodowych, par surogatów, UTF-16 i Rune typu, zobacz wprowadzenie do kodowania znaków w programie .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.

Poniższe sekcje przeanalizują relacje między Char obiektem a znakiem i omawiają niektóre typowe zadania wykonywane z Char wystąpieniami.The following sections examine the relationship between a Char object and a character and discuss some common tasks performed with Char instances. Zalecamy rozważenie Rune typu, wprowadzonego w .NET Core 3,0, jako alternatywy Char dla wykonywania niektórych z tych zadań.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.

Obiekty char, znaki Unicode i ciągiChar objects, Unicode characters, and strings

StringObiekt jest sekwencyjną kolekcją Char struktur, które reprezentują ciąg tekstowy.A String object is a sequential collection of Char structures that represents a string of text. Większość znaków Unicode może być reprezentowana przez pojedynczy Char obiekt, ale znak, który jest zakodowany jako znak podstawowy, para dwuskładnikowa i/lub łączenie sekwencji znaków jest reprezentowane przez wiele Char obiektów.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. Z tego powodu Char Struktura w String obiekcie nie musi być równoważna z pojedynczym znakiem Unicode.For this reason, a Char structure in a String object is not necessarily equivalent to a single Unicode character.

Wiele jednostek kodu 16-bitowych służy do reprezentowania pojedynczych znaków Unicode w następujących przypadkach:Multiple 16-bit code units are used to represent single Unicode characters in the following cases:

  • Symbole, które mogą składać się z pojedynczego znaku lub znaku podstawowego, po którym następuje jeden lub więcej łączenie znaków.Glyphs, which may consist of a single character or of a base character followed by one or more combining characters. Na przykład znak ä jest reprezentowany przez Char obiekt, którego jednostką kodu jest u + 0061, a następnie Char obiekt, którego jednostką kodu jest 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. (Znak ä można także zdefiniować za pomocą pojedynczego Char obiektu, który ma jednostkę kodu U + 00E4). Poniższy przykład ilustruje, że znak ä składa się z dwóch Char obiektów.(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:
    '       ä
    
  • Znaki poza podstawową warstwą wielojęzyczną Unicode (BMP).Characters outside the Unicode Basic Multilingual Plane (BMP). Unicode obsługuje szesnaste płaszczyzny oprócz BMP, która reprezentuje płaszczyznę 0.Unicode supports sixteen planes in addition to the BMP, which represents plane 0. Punkt kodu Unicode jest reprezentowany w UTF-32 przez wartość 21-bitowej, która obejmuje płaszczyznę.A Unicode code point is represented in UTF-32 by a 21-bit value that includes the plane. Na przykład U + 1D160 reprezentuje SYMBOL MUZYCZNy osiem znaków notatki.For example, U+1D160 represents the MUSICAL SYMBOL EIGHTH NOTE character. Ponieważ kodowanie UTF-16 ma tylko 16 bitów, znaki poza BMP są reprezentowane przez pary zastępcze w UTF-16.Because UTF-16 encoding has only 16 bits, characters outside the BMP are represented by surrogate pairs in UTF-16. W poniższym przykładzie pokazano, że odpowiednik w formacie UTF-32 w języku U + 1D160, znak "osiem ADNOTACJi" w symbolu MUZYCZNym oznacza 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 jest dużym surogatem; górny element zastępczy należy do zakresu od U + D800 do U + DBFF.U+D834 is the high surrogate; high surrogates range from U+D800 through U+DBFF. U + DD60 jest dolnym surogatem; niski zakres surogatów od U + DC00 do 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
    

Znaki i kategorie znakówCharacters and character categories

Każdy znak Unicode lub prawidłowa para dwuskładnikowa należy do kategorii Unicode.Each Unicode character or valid surrogate pair belongs to a Unicode category. W programie .NET kategorie Unicode są reprezentowane przez elementy członkowskie UnicodeCategory wyliczenia i zawierają wartości, takie jak UnicodeCategory.CurrencySymbol , UnicodeCategory.LowercaseLetter , i UnicodeCategory.SpaceSeparator , na przykład.In .NET, Unicode categories are represented by members of the UnicodeCategory enumeration and include values such as UnicodeCategory.CurrencySymbol, UnicodeCategory.LowercaseLetter, and UnicodeCategory.SpaceSeparator, for example.

Aby określić kategorię Unicode znaku, wywołaj GetUnicodeCategory metodę.To determine the Unicode category of a character, call the GetUnicodeCategory method. Na przykład poniższy przykład wywołuje polecenie, GetUnicodeCategory Aby wyświetlić kategorię Unicode każdego znaku w ciągu.For example, the following example calls the GetUnicodeCategory to display the Unicode category of each character in a string. Przykład działa poprawnie tylko wtedy, gdy w wystąpieniu nie ma par dwuskładnikowych 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

Wewnętrznie, dla znaków poza zakresem ASCII (U + 0000 do U + 00FF), GetUnicodeCategory metoda zależy od kategorii Unicode raportowanych przez CharUnicodeInfo klasę.Internally, for characters outside the ASCII range (U+0000 through U+00FF), the GetUnicodeCategory method depends on Unicode categories reported by the CharUnicodeInfo class. Począwszy od .NET Framework 4.6.2, znaki Unicode są klasyfikowane na podstawie standardu Unicode w wersji 8.0.0.Starting with .NET Framework 4.6.2, Unicode characters are classified based on The Unicode Standard, Version 8.0.0. W wersjach .NET Framework od Program .NET Framework 4.NET Framework 4 do .NET Framework 4.6.1.NET Framework 4.6.1 , są one klasyfikowane na podstawie standardu Unicode w wersji 6.3.0.In versions of the .NET Framework from Program .NET Framework 4.NET Framework 4 to .NET Framework 4.6.1.NET Framework 4.6.1, they are classified based on The Unicode Standard, Version 6.3.0.

Znaki i elementy tekstoweCharacters and text elements

Ponieważ pojedynczy znak może być reprezentowany przez wiele Char obiektów, nie zawsze jest zrozumiały do pracy z poszczególnymi Char obiektami.Because a single character can be represented by multiple Char objects, it is not always meaningful to work with individual Char objects. Na przykład poniższy przykład konwertuje punkty kodu Unicode, które reprezentują numery Morza Egejskiego od zera do 9 do jednostek kodu zakodowanych w formacie 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. Ponieważ błędnie określa Char obiekty z znakami, nieprawidłowo zgłasza, że ciąg wyników ma 20 znaków.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.

Można wykonać następujące czynności, aby uniknąć założeń, że Char obiekt reprezentuje pojedynczy znak.You can do the following to avoid the assumption that a Char object represents a single character.

  • Możesz pracować z String obiektem w całości zamiast pracować z jego indywidualnymi znakami, aby reprezentować i analizować zawartość lingwistyczną.You can work with a String object in its entirety instead of working with its individual characters to represent and analyze linguistic content.

  • Możesz użyć String.EnumerateRunes jak pokazano w następującym przykładzie: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;
    }
    
  • Można użyć StringInfo klasy do pracy z elementami tekstowymi, a nie poszczególnymi Char obiektami.You can use the StringInfo class to work with text elements instead of individual Char objects. Poniższy przykład używa StringInfo obiektu do zliczania liczby elementów tekstowych w ciągu, który składa się z liczb Morza Egejskiego od zera do dziewięciu.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. Ponieważ traktuje parę surogatu pojedynczy znak, prawidłowo raportuje, że ciąg zawiera dziesięć znaków.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.
    
  • Jeśli ciąg zawiera znak podstawowy, który ma co najmniej jeden łączący znak, można wywołać metodę, String.Normalize Aby skonwertować podciąg na pojedynczą jednostkę kodu zakodowaną w formacie 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. Poniższy przykład wywołuje metodę, String.Normalize Aby skonwertować znak podstawowy u + 0061 (mała litera A) i łączący znak u + 0308 (łączący z diaerezą) do U + 00E4 (mała litera a z diaerezą).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)
    

Typowe operacjeCommon operations

CharStruktura zapewnia metody do porównywania Char obiektów, konwersji wartości bieżącego Char obiektu na obiekt innego typu i określania kategorii Unicode Char obiektu: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:

Wymagana czynnośćTo do this Użyj tych System.Char metodUse these System.Char methods
Porównywanie Char obiektówCompare Char objects CompareTo i EqualsCompareTo and Equals
Konwertuj punkt kodu na ciągConvert a code point to a string ConvertFromUtf32

Zobacz również Rune Typ.See also the Rune type.
Konwertowanie Char obiektu lub pary zastępczej Char obiektów na punkt koduConvert a Char object or a surrogate pair of Char objects to a code point Dla pojedynczego znaku: Convert.ToInt32(Char)For a single character: Convert.ToInt32(Char)

Dla pary zastępczej lub znaku w ciągu: Char.ConvertToUtf32For a surrogate pair or a character in a string: Char.ConvertToUtf32

Zobacz również Rune Typ.See also the Rune type.
Pobieranie kategorii Unicode znakuGet the Unicode category of a character GetUnicodeCategory

Zobacz też Rune.GetUnicodeCategory.See also Rune.GetUnicodeCategory.
Określ, czy znak znajduje się w określonej kategorii Unicode, takiej jak cyfra, litera, interpunkcja, znak kontrolny itd.Determine 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 , IsUpper i IsWhiteSpaceIsControl, IsDigit, IsHighSurrogate, IsLetter, IsLetterOrDigit, IsLower, IsLowSurrogate, IsNumber, IsPunctuation, IsSeparator, IsSurrogate, IsSurrogatePair, IsSymbol, IsUpper, and IsWhiteSpace

Zobacz również odpowiadające metody w Rune typie.See also corresponding methods on the Rune type.
Konwertuj Char obiekt reprezentujący liczbę na typ wartości liczbowejConvert a Char object that represents a number to a numeric value type GetNumericValue

Zobacz też Rune.GetNumericValue.See also Rune.GetNumericValue.
Konwertowanie znaku w ciągu na Char obiektConvert a character in a string into a Char object Parse i TryParseParse and TryParse
Konwertowanie Char obiektu na String obiektConvert a Char object to a String object ToString
Zmiana wielkości liter Char obiektuChange the case of a Char object ToLower, ToLowerInvariant , ToUpper i ToUpperInvariantToLower, ToLowerInvariant, ToUpper, and ToUpperInvariant

Zobacz również odpowiadające metody w Rune typie.See also corresponding methods on the Rune type.

Wartości char i InteropChar values and interop

Gdy zarządzany Char Typ, który jest reprezentowany jako jednostka kodu zakodowanego w formacie Unicode UTF-16, jest przekazywany do niezarządzanego kodu, organizator międzyoperacyjny domyślnie konwertuje zestaw znaków na ANSI.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. Można zastosować DllImportAttribute atrybut do deklaracji wywołania platformy i StructLayoutAttribute atrybutu do deklaracji międzyoperacyjności modelu COM, aby określić, który zestaw znaków jest Char używany przez typ zorganizowany.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.

Pola

MaxValue

Reprezentuje największą możliwą wartość Char .Represents the largest possible value of a Char. To pole jest stałe.This field is constant.

MinValue

Reprezentuje najmniejszą możliwą wartość Char .Represents the smallest possible value of a Char. To pole jest stałe.This field is constant.

Metody

CompareTo(Char)

Porównuje to wystąpienie z określonym Char obiektem i wskazuje, czy to wystąpienie poprzedza, następuje po lub występuje w tym samym położeniu w kolejności sortowania, jak określony Char obiekt.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)

Porównuje to wystąpienie z określonym obiektem i wskazuje, czy to wystąpienie poprzedza, następuje po lub występuje w tym samym położeniu w kolejności sortowania, jak określono Object .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)

Konwertuje określony punkt kodu Unicode na ciąg zakodowany w formacie UTF-16.Converts the specified Unicode code point into a UTF-16 encoded string.

ConvertToUtf32(Char, Char)

Konwertuje wartość wieloskładnikowej zakodowanej pary UTF-16 na punkt kodu Unicode.Converts the value of a UTF-16 encoded surrogate pair into a Unicode code point.

ConvertToUtf32(String, Int32)

Konwertuje wartość zakodowanego znaku UTF-16 lub pary zastępczej na określonej pozycji w ciągu do punktu kodu 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)

Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu Char obiektowi.Returns a value that indicates whether this instance is equal to the specified Char object.

Equals(Object)

Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi.Returns a value that indicates whether this instance is equal to a specified object.

GetHashCode()

Zwraca wartość skrótu dla tego wystąpienia.Returns the hash code for this instance.

GetNumericValue(Char)

Konwertuje określony numeryczny znak Unicode na liczbę zmiennoprzecinkową o podwójnej precyzji.Converts the specified numeric Unicode character to a double-precision floating point number.

GetNumericValue(String, Int32)

Konwertuje numeryczny znak Unicode w podanej pozycji w określonym ciągu na liczbę zmiennoprzecinkową o podwójnej precyzji.Converts the numeric Unicode character at the specified position in a specified string to a double-precision floating point number.

GetTypeCode()

Zwraca TypeCode wartość typu Char .Returns the TypeCode for value type Char.

GetUnicodeCategory(Char)

Klasyfikuje określony znak Unicode do grupy identyfikowanej przez jedną z UnicodeCategory wartości.Categorizes a specified Unicode character into a group identified by one of the UnicodeCategory values.

GetUnicodeCategory(String, Int32)

Klasyfikuje znak w określonym położeniu w określonym ciągu do grupy identyfikowanej przez jedną z UnicodeCategory wartości.Categorizes the character at the specified position in a specified string into a group identified by one of the UnicodeCategory values.

IsControl(Char)

Wskazuje, czy określony znak Unicode jest kategoryzowany jako znak kontrolny.Indicates whether the specified Unicode character is categorized as a control character.

IsControl(String, Int32)

Wskazuje, czy znak w określonym położeniu w określonym ciągu jest kategoryzowany jako znak kontrolny.Indicates whether the character at the specified position in a specified string is categorized as a control character.

IsDigit(Char)

Wskazuje, czy określony znak Unicode jest kategoryzowany jako cyfra dziesiętna.Indicates whether the specified Unicode character is categorized as a decimal digit.

IsDigit(String, Int32)

Wskazuje, czy znak w określonym położeniu w określonym ciągu jest kategoryzowany jako cyfra dziesiętna.Indicates whether the character at the specified position in a specified string is categorized as a decimal digit.

IsHighSurrogate(Char)

Wskazuje, czy określony Char obiekt jest dużym surogatem.Indicates whether the specified Char object is a high surrogate.

IsHighSurrogate(String, Int32)

Wskazuje, czy Char obiekt w podanej pozycji w ciągu jest dużym surogatem.Indicates whether the Char object at the specified position in a string is a high surrogate.

IsLetter(Char)

Wskazuje, czy określony znak Unicode jest kategoryzowany jako litera Unicode.Indicates whether the specified Unicode character is categorized as a Unicode letter.

IsLetter(String, Int32)

Wskazuje, czy znak w określonym położeniu w określonym ciągu jest kategoryzowany jako litera Unicode.Indicates whether the character at the specified position in a specified string is categorized as a Unicode letter.

IsLetterOrDigit(Char)

Wskazuje, czy określony znak Unicode jest kategoryzowany jako litera czy cyfra dziesiętna.Indicates whether the specified Unicode character is categorized as a letter or a decimal digit.

IsLetterOrDigit(String, Int32)

Wskazuje, czy znak w określonym położeniu w określonym ciągu jest kategoryzowany jako litera, czy cyfra dziesiętna.Indicates whether the character at the specified position in a specified string is categorized as a letter or a decimal digit.

IsLower(Char)

Wskazuje, czy określony znak Unicode jest kategoryzowany małymi literami.Indicates whether the specified Unicode character is categorized as a lowercase letter.

IsLower(String, Int32)

Wskazuje, czy znak w określonym położeniu w określonym ciągu jest kategoryzowany jako mała litera.Indicates whether the character at the specified position in a specified string is categorized as a lowercase letter.

IsLowSurrogate(Char)

Wskazuje, czy określony Char obiekt jest małym surogatem.Indicates whether the specified Char object is a low surrogate.

IsLowSurrogate(String, Int32)

Wskazuje, czy Char obiekt w podanej pozycji w ciągu jest dolnym surogatem.Indicates whether the Char object at the specified position in a string is a low surrogate.

IsNumber(Char)

Wskazuje, czy określony znak Unicode jest kategoryzowany jako liczba.Indicates whether the specified Unicode character is categorized as a number.

IsNumber(String, Int32)

Wskazuje, czy znak w określonym położeniu w określonym ciągu jest kategoryzowany jako liczba.Indicates whether the character at the specified position in a specified string is categorized as a number.

IsPunctuation(Char)

Wskazuje, czy określony znak Unicode jest kategoryzowany jako znak interpunkcji.Indicates whether the specified Unicode character is categorized as a punctuation mark.

IsPunctuation(String, Int32)

Wskazuje, czy znak w określonym położeniu w określonym ciągu jest kategoryzowany jako znak interpunkcji.Indicates whether the character at the specified position in a specified string is categorized as a punctuation mark.

IsSeparator(Char)

Wskazuje, czy określony znak Unicode jest kategoryzowany jako znak separatora.Indicates whether the specified Unicode character is categorized as a separator character.

IsSeparator(String, Int32)

Wskazuje, czy znak w określonym położeniu w określonym ciągu jest kategoryzowany jako znak separatora.Indicates whether the character at the specified position in a specified string is categorized as a separator character.

IsSurrogate(Char)

Wskazuje, czy określony znak ma jednostkowy Kod zastępczy.Indicates whether the specified character has a surrogate code unit.

IsSurrogate(String, Int32)

Wskazuje, czy znak na określonej pozycji w określonym ciągu ma jednostkowy Kod zastępczy.Indicates whether the character at the specified position in a specified string has a surrogate code unit.

IsSurrogatePair(Char, Char)

Wskazuje, czy dwa określone Char obiekty tworzą parę zastępczą.Indicates whether the two specified Char objects form a surrogate pair.

IsSurrogatePair(String, Int32)

Wskazuje, czy dwa sąsiadujące Char obiekty w określonej pozycji w ciągu tworzą parę zastępczą.Indicates whether two adjacent Char objects at a specified position in a string form a surrogate pair.

IsSymbol(Char)

Wskazuje, czy określony znak Unicode jest kategoryzowany jako znak symbolu.Indicates whether the specified Unicode character is categorized as a symbol character.

IsSymbol(String, Int32)

Wskazuje, czy znak w określonym położeniu w określonym ciągu jest kategoryzowany jako symbol znaku.Indicates whether the character at the specified position in a specified string is categorized as a symbol character.

IsUpper(Char)

Wskazuje, czy określony znak Unicode jest kategoryzowany jako wielką literą.Indicates whether the specified Unicode character is categorized as an uppercase letter.

IsUpper(String, Int32)

Wskazuje, czy znak w określonym położeniu w określonym ciągu jest kategoryzowany jako wielką literą.Indicates whether the character at the specified position in a specified string is categorized as an uppercase letter.

IsWhiteSpace(Char)

Wskazuje, czy określony znak Unicode jest kategoryzowany jako odstęp.Indicates whether the specified Unicode character is categorized as white space.

IsWhiteSpace(String, Int32)

Wskazuje, czy znak w określonym położeniu w określonym ciągu jest kategoryzowany jako odstęp.Indicates whether the character at the specified position in a specified string is categorized as white space.

Parse(String)

Konwertuje wartość określonego ciągu na odpowiedni znak Unicode.Converts the value of the specified string to its equivalent Unicode character.

ToLower(Char)

Konwertuje wartość znaku Unicode na jego odpowiednik małymi literami.Converts the value of a Unicode character to its lowercase equivalent.

ToLower(Char, CultureInfo)

Konwertuje wartość określonego znaku Unicode na jego małą literę jako odpowiednik przy użyciu określonych informacji o formatowaniu specyficznych dla kultury.Converts the value of a specified Unicode character to its lowercase equivalent using specified culture-specific formatting information.

ToLowerInvariant(Char)

Konwertuje wartość znaku Unicode na jego małe litery, używając reguł wielkości liter dla niezmiennej kultury.Converts the value of a Unicode character to its lowercase equivalent using the casing rules of the invariant culture.

ToString()

Konwertuje wartość tego wystąpienia na jego równoważną reprezentację w postaci ciągu.Converts the value of this instance to its equivalent string representation.

ToString(Char)

Konwertuje określony znak Unicode na jego równoważną reprezentację w postaci ciągu.Converts the specified Unicode character to its equivalent string representation.

ToString(IFormatProvider)

Konwertuje wartość tego wystąpienia na jego równoważną reprezentację w postaci ciągu przy użyciu określonych informacji o formacie specyficznych dla kultury.Converts the value of this instance to its equivalent string representation using the specified culture-specific format information.

ToUpper(Char)

Konwertuje wartość znaku Unicode na jego wielką literę.Converts the value of a Unicode character to its uppercase equivalent.

ToUpper(Char, CultureInfo)

Konwertuje wartość określonego znaku Unicode na jego wielką literę jako odpowiednik przy użyciu określonych informacji o formatowaniu specyficznych dla kultury.Converts the value of a specified Unicode character to its uppercase equivalent using specified culture-specific formatting information.

ToUpperInvariant(Char)

Konwertuje wartość znaku Unicode na jego wielką literę jako odpowiednik przy użyciu reguł wielkości liter dla niezmiennej kultury.Converts the value of a Unicode character to its uppercase equivalent using the casing rules of the invariant culture.

TryParse(String, Char)

Konwertuje wartość określonego ciągu na odpowiedni znak Unicode.Converts the value of the specified string to its equivalent Unicode character. Kod powrotny wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.A return code indicates whether the conversion succeeded or failed.

Jawne implementacje interfejsu

IComparable.CompareTo(Object)

Porównuje bieżące wystąpienie z innym obiektem tego samego typu i zwraca liczbę całkowitą, która wskazuje, czy bieżące wystąpienie poprzedza, następuje po lub występuje w tym samym położeniu, co inny obiekt w porządku sortowania.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()

Zwraca wartość TypeCode dla tego wystąpienia.Returns the TypeCode for this instance.

IConvertible.ToBoolean(IFormatProvider)

Uwaga Ta konwersja nie jest obsługiwana.Note This conversion is not supported. Podjęto próbę wyrzucania InvalidCastException .Attempting to do so throws an InvalidCastException.

IConvertible.ToByte(IFormatProvider)

Aby uzyskać opis tego elementu członkowskiego, zobacz ToByte(IFormatProvider) .For a description of this member, see ToByte(IFormatProvider).

IConvertible.ToChar(IFormatProvider)

Aby uzyskać opis tego elementu członkowskiego, zobacz ToChar(IFormatProvider) .For a description of this member, see ToChar(IFormatProvider).

IConvertible.ToDateTime(IFormatProvider)

Uwaga Ta konwersja nie jest obsługiwana.Note This conversion is not supported. Podjęto próbę wyrzucania InvalidCastException .Attempting to do so throws an InvalidCastException.

IConvertible.ToDecimal(IFormatProvider)

Uwaga Ta konwersja nie jest obsługiwana.Note This conversion is not supported. Podjęto próbę wyrzucania InvalidCastException .Attempting to do so throws an InvalidCastException.

IConvertible.ToDouble(IFormatProvider)

Uwaga Ta konwersja nie jest obsługiwana.Note This conversion is not supported. Podjęto próbę wyrzucania InvalidCastException .Attempting to do so throws an InvalidCastException.

IConvertible.ToInt16(IFormatProvider)

Aby uzyskać opis tego elementu członkowskiego, zobacz ToInt16(IFormatProvider) .For a description of this member, see ToInt16(IFormatProvider).

IConvertible.ToInt32(IFormatProvider)

Aby uzyskać opis tego elementu członkowskiego, zobacz ToInt32(IFormatProvider) .For a description of this member, see ToInt32(IFormatProvider).

IConvertible.ToInt64(IFormatProvider)

Aby uzyskać opis tego elementu członkowskiego, zobacz ToInt64(IFormatProvider) .For a description of this member, see ToInt64(IFormatProvider).

IConvertible.ToSByte(IFormatProvider)

Aby uzyskać opis tego elementu członkowskiego, zobacz ToSByte(IFormatProvider) .For a description of this member, see ToSByte(IFormatProvider).

IConvertible.ToSingle(IFormatProvider)

Uwaga Ta konwersja nie jest obsługiwana.Note This conversion is not supported. Podjęto próbę wyrzucania InvalidCastException .Attempting to do so throws an InvalidCastException.

IConvertible.ToString(IFormatProvider)

Konwertuje wartość tego wystąpienia na odpowiednik ciągu przy użyciu określonych informacji o formatowaniu specyficznych dla kultury.Converts the value of this instance to an equivalent string, using the specified culture-specific formatting information.

IConvertible.ToType(Type, IFormatProvider)

Aby uzyskać opis tego elementu członkowskiego, zobacz ToType(Type, IFormatProvider) .For a description of this member, see ToType(Type, IFormatProvider).

IConvertible.ToUInt16(IFormatProvider)

Aby uzyskać opis tego elementu członkowskiego, zobacz ToUInt16(IFormatProvider) .For a description of this member, see ToUInt16(IFormatProvider).

IConvertible.ToUInt32(IFormatProvider)

Aby uzyskać opis tego elementu członkowskiego, zobacz ToUInt32(IFormatProvider) .For a description of this member, see ToUInt32(IFormatProvider).

IConvertible.ToUInt64(IFormatProvider)

Aby uzyskać opis tego elementu członkowskiego, zobacz ToUInt64(IFormatProvider) .For a description of this member, see ToUInt64(IFormatProvider).

Dotyczy

Bezpieczeństwo wątkowe

Wszystkie elementy członkowskie tego typu są bezpieczne wątkowo.All members of this type are thread safe. Elementy członkowskie, które na pierwszy rzut oka modyfikują stan wystąpienia, w rzeczywistości zwracają nowe wystąpienie zainicjowane z nową wartością.Members that appear to modify instance state actually return a new instance initialized with the new value. Podobnie jak w przypadku innych typów odczytywanie i zapisywanie w udostępnionej zmiennej, która zawiera wystąpienie tego typu, musi być chronione przez blokadę w celu zagwarantowania bezpieczeństwa wątków.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.

Zobacz też