Char 구조체

정의

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)
상속
특성
구현

예제

다음 코드 예제에서는의 일부 메서드를 보여 줍니다 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

설명

.NET에서는 구조체를 사용 하 여 Char utf-16 인코딩을 사용 하 여 유니코드 코드 요소를 나타냅니다..NET uses the Char structure to represent Unicode code points by using UTF-16 encoding. 개체의 값은 Char 16 비트 숫자 (서 수) 값입니다.The value of a Char object is its 16-bit numeric (ordinal) value.

유니코드, 스칼라 값, 코드 요소, 서로게이트 쌍, u t f-16 및 형식에 익숙하지 않은 경우 Rune .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.

다음 섹션에서는 개체와 문자 간의 관계를 검토 Char 하 고 인스턴스를 사용 하 여 수행 되는 몇 가지 일반적인 태스크에 대해 설명 합니다 Char .The following sections examine the relationship between a Char object and a character and discuss some common tasks performed with Char instances. Rune이러한 작업 중 일부를 수행 하는 대신 .Net Core 3.0에 도입 된 형식을 고려 하는 것이 좋습니다 Char .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.

Char 개체, 유니코드 문자 및 문자열Char objects, Unicode characters, and strings

String개체는 Char 텍스트 문자열을 나타내는 구조체의 순차적인 컬렉션입니다.A String object is a sequential collection of Char structures that represents a string of text. 대부분의 유니코드 문자는 단일 개체로 나타낼 수 Char 있지만 기본 문자, 서로게이트 쌍 및/또는 조합 문자 시퀀스로 인코딩된 문자는 여러 개체로 표현 됩니다 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. 따라서 Char 개체의 구조는 String 단일 유니코드 문자와 반드시 일치 하지는 않습니다.For this reason, a Char structure in a String object is not necessarily equivalent to a single Unicode character.

여러 16 비트 코드 단위는 다음과 같은 경우에 단일 유니코드 문자를 나타내는 데 사용 됩니다.Multiple 16-bit code units are used to represent single Unicode characters in the following cases:

  • 문자 모양-단일 문자 또는 기본 문자 다음에 하나 이상의 결합 문자를 따라 구성 될 수 있습니다.Glyphs, which may consist of a single character or of a base character followed by one or more combining characters. 예를 들어, ä 문자는 Char 코드 단위가 u + 0061 다음에 Char 코드 단위가 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. 문자 ä는 Char U + 00E4의 코드 단위가 있는 단일 개체에 의해 정의 될 수도 있습니다. 다음 예에서는 문자 ä가 두 개체로 구성 되어 있음을 보여 줍니다 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:
    '       ä
    
  • 유니코드 기본 다국어 평면 (BMP) 외부 문자.Characters outside the Unicode Basic Multilingual Plane (BMP). 유니코드는 평면 0을 나타내는 BMP 외에 16 개 평면을 지원 합니다.Unicode supports sixteen planes in addition to the BMP, which represents plane 0. 유니코드 코드 포인트는 u t f-32으로 평면을 포함 하는 21 비트 값으로 표현 됩니다.A Unicode code point is represented in UTF-32 by a 21-bit value that includes the plane. 예를 들어 U + 1D160은 음악 기호 여덟 번째 메모 문자를 나타냅니다.For example, U+1D160 represents the MUSICAL SYMBOL EIGHTH NOTE character. UTF-16 인코딩에는 16 비트만 있으므로 BMP 외부의 문자는 u t f-16에서 서로게이트 쌍으로 표현 됩니다.Because UTF-16 encoding has only 16 bits, characters outside the BMP are represented by surrogate pairs in UTF-16. 다음 예제에서는 U + 1D160, 음악 기호 여덟 번째 문자에 해당 하는 u t f-32가 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는 상위 서로게이트입니다. 높은 서로게이트 범위는 U + D 800 U + DBFF 까지입니다.U+D834 is the high surrogate; high surrogates range from U+D800 through U+DBFF. U + DD60는 하위 서로게이트입니다. 하위 서로게이트 범위는 U + D C 00 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
    

문자 및 문자 범주Characters and character categories

각 유니코드 문자 또는 유효한 서로게이트 쌍은 유니코드 범주에 속합니다.Each Unicode character or valid surrogate pair belongs to a Unicode category. .NET Framework에서 유니코드 범주는 열거형의 멤버로 표시 되 고 예를 들어, UnicodeCategory 및와 같은 값을 포함 UnicodeCategory.CurrencySymbol UnicodeCategory.LowercaseLetter UnicodeCategory.SpaceSeparator 합니다.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.

문자의 유니코드 범주를 확인 하려면 메서드를 호출 GetUnicodeCategory 합니다.To determine the Unicode category of a character, call the GetUnicodeCategory method. 예를 들어 다음 예제에서는를 호출 GetUnicodeCategory 하 여 문자열의 각 문자에 대 한 유니코드 범주를 표시 합니다.For example, the following example calls the GetUnicodeCategory to display the Unicode category of each character in a string. 이 예제는 인스턴스에 서로게이트 쌍이 없는 경우에만 제대로 작동 합니다 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

내부적으로 ASCII 범위 밖의 문자 (U + 0000 ~ U + 00FF)의 경우 GetUnicodeCategory 메서드는 클래스에서 보고 한 유니코드 범주에 따라 달라 집니다 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. 부터 .NET Framework 4.6.2.NET Framework 4.6.2 유니코드 문자는 유니코드 표준 버전 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. 에서로 .NET Framework 버전은 .NET Framework 4.NET Framework 4 .NET Framework 4.6.1.NET Framework 4.6.1 유니코드 표준 버전 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.

문자 및 텍스트 요소Characters and text elements

단일 문자를 여러 개체로 나타낼 수 있으므로 Char 개별 개체를 사용 하는 것이 항상 의미가 있는 것은 아닙니다 Char .Because a single character can be represented by multiple Char objects, it is not always meaningful to work with individual Char objects. 예를 들어 다음 예제에서는 Aegean 숫자 0에서 9까지 나타내는 유니코드 코드 요소를 u t f-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. 잘못 된 개체를 문자와 동일 하 게 간주 하기 때문에 Char 결과 문자열에 20 자가 있음을 보고 합니다.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.

다음 작업을 수행 하 여 개체가 단일 문자를 나타내는 가정을 피할 수 있습니다 Char .You can do the following to avoid the assumption that a Char object represents a single character.

  • String개별 문자로 작업 하는 대신 개체를 전체적으로 사용 하 여 언어 내용을 나타내고 분석할 수 있습니다.You can work with a String object in its entirety instead of working with its individual characters to represent and analyze linguistic content.

  • String.EnumerateRunes다음 예제와 같이를 사용할 수 있습니다.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;
    }
    
  • 클래스를 사용 StringInfo 하 여 개별 개체 대신 텍스트 요소 작업을 수행할 수 있습니다 Char .You can use the StringInfo class to work with text elements instead of individual Char objects. 다음 예제에서는 개체를 사용 하 여 StringInfo Aegean 숫자 0에서 9까지 구성 된 문자열의 텍스트 요소 수를 계산 합니다.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. 서로게이트 쌍은 단일 문자를 고려 하기 때문에 문자열에 10 자가 포함 된 것으로 올바르게 보고 됩니다.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.
    
  • 문자열에 조합 문자가 하나 이상 포함 된 기본 문자가 포함 된 경우 메서드를 호출 String.Normalize 하 여 부분 문자열을 단일 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. 다음 예제에서는 메서드를 호출 String.Normalize 하 여 기본 문자 u + 0061 (라틴어 소문자 a)를 변환 하 고 문자 u + 0308 (DIAERESIS 결합)를 u + 00E4로 변환 합니다 (라틴어 소문자 A a DIAERESIS).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)
    

일반 작업Common operations

Char구조체는 개체를 비교 하 고 Char , 현재 개체의 값을 Char 다른 형식의 개체로 변환 하 고, 개체의 유니코드 범주를 확인 하는 메서드를 제공 합니다 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:

원하는 작업To do this 다음 System.Char 방법 사용Use these System.Char methods
Char개체 비교Compare Char objects CompareToEqualsCompareTo and Equals
코드 포인트를 문자열로 변환Convert a code point to a string ConvertFromUtf32

또한 형식을 참조 하세요 Rune .See also the Rune type.
Char개체 또는 개체의 서로게이트 쌍을 Char 코드 점으로 변환Convert a Char object or a surrogate pair of Char objects to a code point 단일 문자: Convert.ToInt32(Char)For a single character: Convert.ToInt32(Char)

서로게이트 쌍 또는 문자열의 문자: Char.ConvertToUtf32For a surrogate pair or a character in a string: Char.ConvertToUtf32

또한 형식을 참조 하세요 Rune .See also the Rune type.
문자의 유니코드 범주를 가져옵니다.Get the Unicode category of a character GetUnicodeCategory

Rune.GetUnicodeCategory을 참조하세요.See also Rune.GetUnicodeCategory.
문자가 숫자, 문자, 문장 부호, 제어 문자 등의 특정 유니코드 범주에 있는지 여부를 확인 합니다.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 IsUpperIsWhiteSpaceIsControl, IsDigit, IsHighSurrogate, IsLetter, IsLetterOrDigit, IsLower, IsLowSurrogate, IsNumber, IsPunctuation, IsSeparator, IsSurrogate, IsSurrogatePair, IsSymbol, IsUpper, and IsWhiteSpace

또한 형식에 대 한 해당 메서드를 참조 하세요 Rune .See also corresponding methods on the Rune type.
숫자 Char 를 나타내는 개체를 숫자 값 형식으로 변환 합니다.Convert a Char object that represents a number to a numeric value type GetNumericValue

Rune.GetNumericValue을 참조하세요.See also Rune.GetNumericValue.
문자열의 문자를 Char 개체로 변환Convert a character in a string into a Char object ParseTryParseParse and TryParse
개체를 Char String 개체로 변환Convert a Char object to a String object ToString
개체의 대/소문자 변경 CharChange the case of a Char object ToLower, ToLowerInvariant, ToUpperToUpperInvariantToLower, ToLowerInvariant, ToUpper, and ToUpperInvariant

또한 형식에 대 한 해당 메서드를 참조 하세요 Rune .See also corresponding methods on the Rune type.

Char 값 및 interopChar values and interop

Char유니코드 u t f-16으로 인코딩된 코드 단위로 표시 되는 관리 되는 형식이 비관리 코드에 전달 되는 경우 interop 마샬러는 기본적으로 문자 집합을 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. DllImportAttribute특성을 플랫폼 호출 선언에 적용 하 고 특성을 StructLayoutAttribute COM interop 선언에 적용 하 여 마샬링된 형식이 사용할 문자 집합을 제어할 수 있습니다 Char .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.

필드

MaxValue

Char의 가능한 최대값을 나타냅니다.Represents the largest possible value of a Char. 이 필드는 상수입니다.This field is constant.

MinValue

Char의 최소값을 나타냅니다.Represents the smallest possible value of a Char. 이 필드는 상수입니다.This field is constant.

메서드

CompareTo(Char)

이 인스턴스를 지정된 Char 개체와 비교하고 정렬 순서에서 이 인스턴스의 위치가 지정된 Char 개체보다 앞인지, 뒤인지 또는 동일한지를 나타냅니다.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)

이 인스턴스를 지정된 개체와 비교하고 정렬 순서에서 이 인스턴스의 위치가 지정된 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)

지정된 유니코드 코드 포인트를 UTF-16으로 인코딩된 문자열로 변환합니다.Converts the specified Unicode code point into a UTF-16 encoded string.

ConvertToUtf32(Char, Char)

UTF-16으로 인코딩된 서로게이트 쌍의 값을 유니코드 코드 포인트로 변환합니다.Converts the value of a UTF-16 encoded surrogate pair into a Unicode code point.

ConvertToUtf32(String, Int32)

문자열의 지정한 위치에 있는 UTF-16으로 인코딩된 문자 또는 서로게이트 쌍의 값을 유니코드 코드 포인트로 변환합니다.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)

이 인스턴스가 지정한 Char 개체와 같은지 여부를 나타내는 값을 반환합니다.Returns a value that indicates whether this instance is equal to the specified Char object.

Equals(Object)

이 인스턴스가 지정한 개체와 같은지를 나타내는 값을 반환합니다.Returns a value that indicates whether this instance is equal to a specified object.

GetHashCode()

이 인스턴스의 해시 코드를 반환합니다.Returns the hash code for this instance.

GetNumericValue(Char)

숫자 형식의 유니코드 문자를 배정밀도 부동 소수점 숫자로 변환합니다.Converts the specified numeric Unicode character to a double-precision floating point number.

GetNumericValue(String, Int32)

지정된 문자열의 지정된 위치에 있는 숫자 형식의 유니코드 문자를 배정밀도 부동 소수점 숫자로 변환합니다.Converts the numeric Unicode character at the specified position in a specified string to a double-precision floating point number.

GetTypeCode()

TypeCode 값 형식에 대한 Char를 반환합니다.Returns the TypeCode for value type Char.

GetUnicodeCategory(Char)

지정한 유니코드 문자를 UnicodeCategory 값 중 하나로 식별되는 그룹으로 분류합니다.Categorizes a specified Unicode character into a group identified by one of the UnicodeCategory values.

GetUnicodeCategory(String, Int32)

지정된 문자열의 지정된 위치에 있는 문자를 UnicodeCategory 값 중 하나로 식별되는 그룹으로 분류합니다.Categorizes the character at the specified position in a specified string into a group identified by one of the UnicodeCategory values.

IsControl(Char)

지정된 유니코드 문자가 제어 문자인지 여부를 나타냅니다.Indicates whether the specified Unicode character is categorized as a control character.

IsControl(String, Int32)

지정된 문자열의 지정된 위치에 있는 문자가 제어 문자인지 여부를 나타냅니다.Indicates whether the character at the specified position in a specified string is categorized as a control character.

IsDigit(Char)

유니코드 문자가 10진수인지 여부를 나타냅니다.Indicates whether the specified Unicode character is categorized as a decimal digit.

IsDigit(String, Int32)

지정된 문자열의 지정된 위치에 있는 문자가 10진수인지 여부를 나타냅니다.Indicates whether the character at the specified position in a specified string is categorized as a decimal digit.

IsHighSurrogate(Char)

지정한 Char 개체가 high surrogate인지 여부를 나타냅니다.Indicates whether the specified Char object is a high surrogate.

IsHighSurrogate(String, Int32)

문자열의 지정한 위치에 있는 Char 개체가 high surrogate인지 여부를 나타냅니다.Indicates whether the Char object at the specified position in a string is a high surrogate.

IsLetter(Char)

지정된 유니코드 문자가 유니코드 글자인지 여부를 나타냅니다.Indicates whether the specified Unicode character is categorized as a Unicode letter.

IsLetter(String, Int32)

지정된 문자열의 지정된 위치에 있는 문자가 유니코드 글자인지 여부를 나타냅니다.Indicates whether the character at the specified position in a specified string is categorized as a Unicode letter.

IsLetterOrDigit(Char)

지정된 유니코드 문자가 글자나 10진수인지 여부를 나타냅니다.Indicates whether the specified Unicode character is categorized as a letter or a decimal digit.

IsLetterOrDigit(String, Int32)

지정된 문자열의 지정된 위치에 있는 문자가 글자나 10진수인지 여부를 나타냅니다.Indicates whether the character at the specified position in a specified string is categorized as a letter or a decimal digit.

IsLower(Char)

유니코드 문자가 소문자 자모인지 여부를 나타냅니다.Indicates whether the specified Unicode character is categorized as a lowercase letter.

IsLower(String, Int32)

지정된 문자열의 지정된 위치에 있는 자모가 소문자인지 여부를 나타냅니다.Indicates whether the character at the specified position in a specified string is categorized as a lowercase letter.

IsLowSurrogate(Char)

지정한 Char 개체가 high surrogate인지 여부를 나타냅니다.Indicates whether the specified Char object is a low surrogate.

IsLowSurrogate(String, Int32)

문자열의 지정한 위치에 있는 Char 개체가 high surrogate인지 여부를 나타냅니다.Indicates whether the Char object at the specified position in a string is a low surrogate.

IsNumber(Char)

지정된 유니코드 문자가 숫자인지 여부를 나타냅니다.Indicates whether the specified Unicode character is categorized as a number.

IsNumber(String, Int32)

지정된 문자열의 지정된 위치에 있는 문자가 숫자인지 여부를 나타냅니다.Indicates whether the character at the specified position in a specified string is categorized as a number.

IsPunctuation(Char)

유니코드 문자가 문장 부호인지 여부를 나타냅니다.Indicates whether the specified Unicode character is categorized as a punctuation mark.

IsPunctuation(String, Int32)

지정된 문자열의 지정된 위치에 있는 문자가 문장 부호인지 여부를 나타냅니다.Indicates whether the character at the specified position in a specified string is categorized as a punctuation mark.

IsSeparator(Char)

유니코드 문자가 구분 문자인지 여부를 나타냅니다.Indicates whether the specified Unicode character is categorized as a separator character.

IsSeparator(String, Int32)

지정된 문자열의 지정된 위치에 있는 문자가 구분 문자인지 여부를 나타냅니다.Indicates whether the character at the specified position in a specified string is categorized as a separator character.

IsSurrogate(Char)

지정된 문자에 서로게이트 코드 단위가 있는지 여부를 나타냅니다.Indicates whether the specified character has a surrogate code unit.

IsSurrogate(String, Int32)

지정된 문자열의 지정된 위치에 있는 문자에 서로게이트 코드 단위가 있는지 여부를 나타냅니다.Indicates whether the character at the specified position in a specified string has a surrogate code unit.

IsSurrogatePair(Char, Char)

지정한 두 개의 Char 개체가 서로게이트 쌍을 형성하는지 여부를 나타냅니다.Indicates whether the two specified Char objects form a surrogate pair.

IsSurrogatePair(String, Int32)

문자열의 지정한 위치에 있는 두 개의 인접한 Char 개체가 서로게이트 쌍을 형성하는지 여부를 나타냅니다.Indicates whether two adjacent Char objects at a specified position in a string form a surrogate pair.

IsSymbol(Char)

유니코드 문자가 기호 문자인지 여부를 나타냅니다.Indicates whether the specified Unicode character is categorized as a symbol character.

IsSymbol(String, Int32)

지정된 문자열의 지정된 위치에 있는 문자가 기호 문자인지 여부를 나타냅니다.Indicates whether the character at the specified position in a specified string is categorized as a symbol character.

IsUpper(Char)

유니코드 자모가 대문자인지 여부를 나타냅니다.Indicates whether the specified Unicode character is categorized as an uppercase letter.

IsUpper(String, Int32)

지정된 문자열의 지정된 위치에 있는 문자가 대문자 자모인지 여부를 나타냅니다.Indicates whether the character at the specified position in a specified string is categorized as an uppercase letter.

IsWhiteSpace(Char)

유니코드 문자가 공백인지 여부를 나타냅니다.Indicates whether the specified Unicode character is categorized as white space.

IsWhiteSpace(String, Int32)

지정된 문자열의 지정된 위치에 있는 문자가 공백인지 여부를 나타냅니다.Indicates whether the character at the specified position in a specified string is categorized as white space.

Parse(String)

지정된 문자열의 값을 해당하는 유니코드 문자로 변환합니다.Converts the value of the specified string to its equivalent Unicode character.

ToLower(Char)

유니코드 문자를 해당하는 소문자로 변환합니다.Converts the value of a Unicode character to its lowercase equivalent.

ToLower(Char, CultureInfo)

문화권별 형식 지정 정보를 사용하여 지정된 유니코드 문자의 값을 해당하는 소문자로 변환합니다.Converts the value of a specified Unicode character to its lowercase equivalent using specified culture-specific formatting information.

ToLowerInvariant(Char)

고정 문화권의 대/소문자 규칙을 사용하여 유니코드 문자의 값을 해당하는 소문자로 변환합니다.Converts the value of a Unicode character to its lowercase equivalent using the casing rules of the invariant culture.

ToString()

이 인스턴스의 값을 해당하는 문자열 표현으로 변환합니다.Converts the value of this instance to its equivalent string representation.

ToString(Char)

지정된 유니코드 문자를 해당하는 문자열 표현으로 변환합니다.Converts the specified Unicode character to its equivalent string representation.

ToString(IFormatProvider)

지정된 문화권별 형식 정보를 사용하여 이 인스턴스의 값을 해당 문자열 표현으로 변환합니다.Converts the value of this instance to its equivalent string representation using the specified culture-specific format information.

ToUpper(Char)

유니코드 문자를 해당하는 대문자로 변환합니다.Converts the value of a Unicode character to its uppercase equivalent.

ToUpper(Char, CultureInfo)

문화권별 형식 지정 정보를 사용하여 지정된 유니코드 문자의 값을 해당하는 대문자로 변환합니다.Converts the value of a specified Unicode character to its uppercase equivalent using specified culture-specific formatting information.

ToUpperInvariant(Char)

고정 문화권의 대/소문자 규칙을 사용하여 유니코드 문자의 값을 해당하는 대문자로 변환합니다.Converts the value of a Unicode character to its uppercase equivalent using the casing rules of the invariant culture.

TryParse(String, Char)

지정된 문자열의 값을 해당하는 유니코드 문자로 변환합니다.Converts the value of the specified string to its equivalent Unicode character. 반환 코드는 변환이 성공했는지 아니면 실패했는지를 나타냅니다.A return code indicates whether the conversion succeeded or failed.

명시적 인터페이스 구현

IComparable.CompareTo(Object)

현재 인스턴스와 동일한 형식의 다른 개체를 비교하고 정렬 순서에서 현재 인스턴스의 위치가 다른 개체보다 앞인지, 뒤인지 또는 동일한지를 나타내는 정수를 반환합니다.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()

이 인스턴스에 대한 TypeCode를 반환합니다.Returns the TypeCode for this instance.

IConvertible.ToBoolean(IFormatProvider)

참고 이 변환은 지원되지 않습니다.Note This conversion is not supported. 그렇게 하면 InvalidCastException이 throw됩니다.Attempting to do so throws an InvalidCastException.

IConvertible.ToByte(IFormatProvider)

이 멤버에 대한 설명은 ToByte(IFormatProvider)를 참조하세요.For a description of this member, see ToByte(IFormatProvider).

IConvertible.ToChar(IFormatProvider)

이 멤버에 대한 설명은 ToChar(IFormatProvider)를 참조하세요.For a description of this member, see ToChar(IFormatProvider).

IConvertible.ToDateTime(IFormatProvider)

참고 이 변환은 지원되지 않습니다.Note This conversion is not supported. 그렇게 하면 InvalidCastException이 throw됩니다.Attempting to do so throws an InvalidCastException.

IConvertible.ToDecimal(IFormatProvider)

참고 이 변환은 지원되지 않습니다.Note This conversion is not supported. 그렇게 하면 InvalidCastException이 throw됩니다.Attempting to do so throws an InvalidCastException.

IConvertible.ToDouble(IFormatProvider)

참고 이 변환은 지원되지 않습니다.Note This conversion is not supported. 그렇게 하면 InvalidCastException이 throw됩니다.Attempting to do so throws an InvalidCastException.

IConvertible.ToInt16(IFormatProvider)

이 멤버에 대한 설명은 ToInt16(IFormatProvider)를 참조하세요.For a description of this member, see ToInt16(IFormatProvider).

IConvertible.ToInt32(IFormatProvider)

이 멤버에 대한 설명은 ToInt32(IFormatProvider)를 참조하세요.For a description of this member, see ToInt32(IFormatProvider).

IConvertible.ToInt64(IFormatProvider)

이 멤버에 대한 설명은 ToInt64(IFormatProvider)를 참조하세요.For a description of this member, see ToInt64(IFormatProvider).

IConvertible.ToSByte(IFormatProvider)

이 멤버에 대한 설명은 ToSByte(IFormatProvider)를 참조하세요.For a description of this member, see ToSByte(IFormatProvider).

IConvertible.ToSingle(IFormatProvider)

참고 이 변환은 지원되지 않습니다.Note This conversion is not supported. 그렇게 하면 InvalidCastException이 throw됩니다.Attempting to do so throws an InvalidCastException.

IConvertible.ToString(IFormatProvider)

지정 된 문화권별 서식 지정 정보를 사용 하 여이 인스턴스의 값을 해당 하는 문자열로 변환 합니다.Converts the value of this instance to an equivalent string, using the specified culture-specific formatting information.

IConvertible.ToType(Type, IFormatProvider)

이 멤버에 대한 설명은 ToType(Type, IFormatProvider)를 참조하세요.For a description of this member, see ToType(Type, IFormatProvider).

IConvertible.ToUInt16(IFormatProvider)

이 멤버에 대한 설명은 ToUInt16(IFormatProvider)를 참조하세요.For a description of this member, see ToUInt16(IFormatProvider).

IConvertible.ToUInt32(IFormatProvider)

이 멤버에 대한 설명은 ToUInt32(IFormatProvider)를 참조하세요.For a description of this member, see ToUInt32(IFormatProvider).

IConvertible.ToUInt64(IFormatProvider)

이 멤버에 대한 설명은 ToUInt64(IFormatProvider)를 참조하세요.For a description of this member, see ToUInt64(IFormatProvider).

적용 대상

스레드 보안

이 형식의 모든 멤버는 스레드로부터 안전 합니다.All members of this type are thread safe. 인스턴스 상태를 수정 하는 것 처럼 보이는 멤버는 실제로 새 값으로 초기화 된 새 인스턴스를 반환 합니다.Members that appear to modify instance state actually return a new instance initialized with the new value. 다른 형식과 마찬가지로이 형식의 인스턴스를 포함 하는 공유 변수에 대 한 읽기 및 쓰기는 스레드 안전을 보장 하기 위해 잠금으로 보호 되어야 합니다.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.

추가 정보