Char Char Char Char Struct

定义

将字符表示为 UTF-16 代码单位。Represents a character as a UTF-16 code unit.

public value class Char : IComparable, IComparable<char>, IConvertible, IEquatable<char>
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public struct Char : IComparable, IComparable<char>, IConvertible, IEquatable<char>
type char = struct
    interface IConvertible
Public Structure Char
Implements IComparable, IComparable(Of Char), IConvertible, IEquatable(Of Char)
继承
属性
实现

示例

下面的代码示例演示了一些中的方法CharThe 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"
	}
}
imports System

Module CharStructure

    Public Sub Main()

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

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

    End Sub

End Module

注解

.NET Framework.NET Framework使用Char结构来表示 Unicode 字符。The .NET Framework.NET Framework uses the Char structure to represent a Unicode character. Unicode 标准用名为一个码位的唯一 21 位标量数字标识的每个 Unicode 字符,并定义指定如何将码位编码为一个或多个 16 位值的一个序列的 UTF 16 编码形式。The Unicode Standard identifies each Unicode character with a unique 21-bit scalar number called a code point, and defines the UTF-16 encoding form that specifies how a code point is encoded into a sequence of one or more 16-bit values. 每个 16 位值范围是从十六进制 0x0000 到 0xFFFF 并存储在Char结构。Each 16-bit value ranges from hexadecimal 0x0000 through 0xFFFF and is stored in a Char structure. Char对象是其 16 位数字 (序号) 值。The value of a Char object is its 16-bit numeric (ordinal) value.

以下各部分分别之间的关系Char对象和一个字符,并讨论一些常见的任务执行Char实例。The following sections examine the relationship between a Char object and a character and discuss some common tasks performed with Char instances.

Char 对象、 Unicode 字符和字符串 Char objects, Unicode characters, and strings
字符和字符类别 Characters and character categories
字符和文本元素 Characters and text elements
常见的操作 Common operations
Char 值和互操作Char values and interop

Char 对象、 Unicode 字符和字符串Char objects, Unicode characters, and strings

一个String对象是的有序集合Char表示的文本字符串的结构。A String object is a sequential collection of Char structures that represents a string of text. 大多数的 Unicode 字符可表示由单个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对象并不一定等同于单个 Unicode 字符。For this reason, a Char structure in a String object is not necessarily equivalent to a single Unicode character.

多个 16 位代码单元用于表示单个 Unicode 字符,在以下情况下: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:
    '       ä
    
  • Unicode 基本多语言平面 (BMP) 外的字符。Characters outside the Unicode Basic Multilingual Plane (BMP). Unicode 支持 BMP、 表示平面 0 除了十六个平面。Unicode supports sixteen planes in addition to the BMP, which represents plane 0. Unicode 码位表示 UTF-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 位,由以 utf-16 代理项对表示位于 BMP 之外的字符。Because UTF-16 encoding has only 16 bits, characters outside the BMP are represented by surrogate pairs in UTF-16. 下面的示例说明了 U + 1D160,音乐符号第八个注释字符的 UTF-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+d800 到 U + DBFF 的高代理项范围。U+D834 is the high surrogate; high surrogates range from U+D800 through U+DBFF. U + DD60 是低代理项;低代理项是从 U+DC00 到 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

每个 Unicode 字符或有效的代理项对属于 Unicode 类别。Each Unicode character or valid surrogate pair belongs to a Unicode category. 在.NET Framework 中,Unicode 类别的成员由表示UnicodeCategory枚举和包括的值如下所述UnicodeCategory.CurrencySymbolUnicodeCategory.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.

若要确定一个字符的 Unicode 类别,请调用GetUnicodeCategory方法。To determine the Unicode category of a character, you call the GetUnicodeCategory method. 例如,下面的示例调用GetUnicodeCategory字符串中显示的每个字符的 Unicode 类别。For example, the following example calls the GetUnicodeCategory to display the Unicode category of each character in a string.

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方法取决于所报告的 Unicode 类别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,Unicode 字符的分类基于Unicode 标准、 版本 8.0.0Starting 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,它们的分类基于Unicode 标准、 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. 例如,下面的示例将转换为 utf-16 编码代码单位表示爱琴海的数字为 0 到 9 的 Unicode 码位。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.

  • 可以使用StringInfo类来处理文本元素而不是个人Char对象。You can use the StringInfo class to work with text elements instead of individual Char objects. 下面的示例使用StringInfo对象中包含的爱琴的字符串的文本元素数目进行计数数字零到 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 (组合以分音符) 转换为 U + 00E4 (拉丁文小写字母与分音符)。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对象复制到另一种类型的对象,并确定的 Unicode 类别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
将转换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
获取一个字符的 Unicode 类别Get the Unicode category of a character GetUnicodeCategory
确定字符是否为数字、 字母、 标点符号等特定 Unicode 类别中,控制字符,等等Determine whether a character is in a particular Unicode category such as digit, letter, punctuation, control character, and so on IsControlIsDigitIsHighSurrogateIsLetterIsLetterOrDigitIsLowerIsLowSurrogateIsNumberIsPunctuationIsSeparatorIsSurrogateIsSurrogatePairIsSymbolIsUpper,和 IsWhiteSpaceIsControl, IsDigit, IsHighSurrogate, IsLetter, IsLetterOrDigit, IsLower, IsLowSurrogate, IsNumber, IsPunctuation, IsSeparator, IsSurrogate, IsSurrogatePair, IsSymbol, IsUpper, and IsWhiteSpace
将转换Char表示的数字为数值类型的对象Convert a Char object that represents a number to a numeric value type 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
更改的大小写Char对象Change the case of a Char object ToLowerToLowerInvariantToUpperToUpperInvariantToLower, ToLowerInvariant, ToUpper, and ToUpperInvariant

Char 值和互操作Char values and interop

当托管Char类型,表示为一个 Unicode utf-16 编码的代码单元,传递到非托管代码,则默认情况下设置为 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 互操作声明,以控制哪些字符集封送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 MaxValue MaxValue MaxValue

表示 Char 的最大可能值。Represents the largest possible value of a Char. 此字段为常数。This field is constant.

MinValue MinValue MinValue MinValue

表示 Char 的最小可能值。Represents the smallest possible value of a Char. 此字段为常数。This field is constant.

方法

CompareTo(Char) CompareTo(Char) CompareTo(Char) 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) CompareTo(Object) CompareTo(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) ConvertFromUtf32(Int32) ConvertFromUtf32(Int32) ConvertFromUtf32(Int32)

将指定的 Unicode 码位转换为 UTF-16 编码字符串。Converts the specified Unicode code point into a UTF-16 encoded string.

ConvertToUtf32(Char, Char) ConvertToUtf32(Char, Char) ConvertToUtf32(Char, Char) ConvertToUtf32(Char, Char)

将 UTF-16 编码的代理项对的值转换为 Unicode 码位。Converts the value of a UTF-16 encoded surrogate pair into a Unicode code point.

ConvertToUtf32(String, Int32) ConvertToUtf32(String, Int32) ConvertToUtf32(String, Int32) ConvertToUtf32(String, Int32)

将字符串中指定位置的 UTF-16 编码字符或代理项对的值转换为 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) Equals(Char) Equals(Char) Equals(Char)

返回一个值,该值指示此实例是否与指定的 Char 对象相等。Returns a value that indicates whether this instance is equal to the specified Char object.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

返回一个值,该值指示此实例是否与指定的对象相等。Returns a value that indicates whether this instance is equal to a specified object.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

返回此实例的哈希代码。Returns the hash code for this instance.

GetNumericValue(String, Int32) GetNumericValue(String, Int32) GetNumericValue(String, Int32) GetNumericValue(String, Int32)

将指定字符串中位于指定位置的数字 Unicode 字符转换为双精度浮点数。Converts the numeric Unicode character at the specified position in a specified string to a double-precision floating point number.

GetNumericValue(Char) GetNumericValue(Char) GetNumericValue(Char) GetNumericValue(Char)

将指定的数字 Unicode 字符转换为双精度浮点数。Converts the specified numeric Unicode character to a double-precision floating point number.

GetTypeCode() GetTypeCode() GetTypeCode() GetTypeCode()

返回值类型 TypeCodeCharReturns the TypeCode for value type Char.

GetUnicodeCategory(Char) GetUnicodeCategory(Char) GetUnicodeCategory(Char) GetUnicodeCategory(Char)

将指定的 Unicode 字符分类到由一个 UnicodeCategory 值标识的组中。Categorizes a specified Unicode character into a group identified by one of the UnicodeCategory values.

GetUnicodeCategory(String, Int32) GetUnicodeCategory(String, Int32) GetUnicodeCategory(String, Int32) 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) IsControl(Char) IsControl(Char) IsControl(Char)

指示指定的 Unicode 字符是否属于控制字符类别。Indicates whether the specified Unicode character is categorized as a control character.

IsControl(String, Int32) IsControl(String, Int32) IsControl(String, Int32) IsControl(String, Int32)

指示指定字符串中位于指定位置处的字符是否属于控制字符类别。Indicates whether the character at the specified position in a specified string is categorized as a control character.

IsDigit(Char) IsDigit(Char) IsDigit(Char) IsDigit(Char)

指示指定的 Unicode 字符是否属于十进制数字类别。Indicates whether the specified Unicode character is categorized as a decimal digit.

IsDigit(String, Int32) IsDigit(String, Int32) IsDigit(String, Int32) IsDigit(String, Int32)

指示指定字符串中位于指定位置处的字符是否属于十进制数字类别。Indicates whether the character at the specified position in a specified string is categorized as a decimal digit.

IsHighSurrogate(String, Int32) IsHighSurrogate(String, Int32) IsHighSurrogate(String, Int32) IsHighSurrogate(String, Int32)

指示字符串中指定位置处的 Char 对象是否为高代理项。Indicates whether the Char object at the specified position in a string is a high surrogate.

IsHighSurrogate(Char) IsHighSurrogate(Char) IsHighSurrogate(Char) IsHighSurrogate(Char)

指示指定的 Char 对象是否是一个高代理项。Indicates whether the specified Char object is a high surrogate.

IsLetter(Char) IsLetter(Char) IsLetter(Char) IsLetter(Char)

指示指定的 Unicode 字符是否属于 Unicode 字母类别。Indicates whether the specified Unicode character is categorized as a Unicode letter.

IsLetter(String, Int32) IsLetter(String, Int32) IsLetter(String, Int32) IsLetter(String, Int32)

指示指定字符串中位于指定位置处的指定字符串是否属于 Unicode 字母类别。Indicates whether the character at the specified position in a specified string is categorized as a Unicode letter.

IsLetterOrDigit(Char) IsLetterOrDigit(Char) IsLetterOrDigit(Char) IsLetterOrDigit(Char)

指示指定的 Unicode 字符是否属于字母或十进制数字类别。Indicates whether the specified Unicode character is categorized as a letter or a decimal digit.

IsLetterOrDigit(String, Int32) IsLetterOrDigit(String, Int32) IsLetterOrDigit(String, Int32) IsLetterOrDigit(String, Int32)

指示指定字符串中位于指定位置处的字符是否属于字母或十进制数字类别。Indicates whether the character at the specified position in a specified string is categorized as a letter or a decimal digit.

IsLower(Char) IsLower(Char) IsLower(Char) IsLower(Char)

指示指定的 Unicode 字符是否属于小写字母类别。Indicates whether the specified Unicode character is categorized as a lowercase letter.

IsLower(String, Int32) IsLower(String, Int32) IsLower(String, Int32) IsLower(String, Int32)

指示指定字符串中位于指定位置处的字符是否属于小写字母类别。Indicates whether the character at the specified position in a specified string is categorized as a lowercase letter.

IsLowSurrogate(Char) IsLowSurrogate(Char) IsLowSurrogate(Char) IsLowSurrogate(Char)

指示指定的 Char 对象是否是一个低代理项。Indicates whether the specified Char object is a low surrogate.

IsLowSurrogate(String, Int32) IsLowSurrogate(String, Int32) IsLowSurrogate(String, Int32) IsLowSurrogate(String, Int32)

指示字符串中指定位置处的 Char 对象是否为低代理项。Indicates whether the Char object at the specified position in a string is a low surrogate.

IsNumber(Char) IsNumber(Char) IsNumber(Char) IsNumber(Char)

指示指定的 Unicode 字符是否属于数字类别。Indicates whether the specified Unicode character is categorized as a number.

IsNumber(String, Int32) IsNumber(String, Int32) IsNumber(String, Int32) IsNumber(String, Int32)

指示指定字符串中位于指定位置的字符是否属于数字类别。Indicates whether the character at the specified position in a specified string is categorized as a number.

IsPunctuation(Char) IsPunctuation(Char) IsPunctuation(Char) IsPunctuation(Char)

指示指定的 Unicode 字符是否属于标点符号类别。Indicates whether the specified Unicode character is categorized as a punctuation mark.

IsPunctuation(String, Int32) IsPunctuation(String, Int32) IsPunctuation(String, Int32) IsPunctuation(String, Int32)

指示指定字符串中位于指定位置处的字符是否属于标点符号类别。Indicates whether the character at the specified position in a specified string is categorized as a punctuation mark.

IsSeparator(Char) IsSeparator(Char) IsSeparator(Char) IsSeparator(Char)

指示指定的 Unicode 字符是否属于分隔符类别。Indicates whether the specified Unicode character is categorized as a separator character.

IsSeparator(String, Int32) IsSeparator(String, Int32) IsSeparator(String, Int32) IsSeparator(String, Int32)

指示指定字符串中位于指定位置处的字符是否属于分隔符类别。Indicates whether the character at the specified position in a specified string is categorized as a separator character.

IsSurrogate(Char) IsSurrogate(Char) IsSurrogate(Char) IsSurrogate(Char)

指示指定的字符是否具有指定的代理项代码单位。Indicates whether the specified character has a surrogate code unit.

IsSurrogate(String, Int32) IsSurrogate(String, Int32) IsSurrogate(String, Int32) IsSurrogate(String, Int32)

指示指定字符串中位于指定位置的字符是否具有代理项代码单位。Indicates whether the character at the specified position in a specified string has a surrogate code unit.

IsSurrogatePair(String, Int32) IsSurrogatePair(String, Int32) IsSurrogatePair(String, Int32) IsSurrogatePair(String, Int32)

指示字符串中指定位置处的两个相邻 Char 对象是否形成一个代理项对。Indicates whether two adjacent Char objects at a specified position in a string form a surrogate pair.

IsSurrogatePair(Char, Char) IsSurrogatePair(Char, Char) IsSurrogatePair(Char, Char) IsSurrogatePair(Char, Char)

指示两个指定的 Char 对象是否形成一个代理项对。Indicates whether the two specified Char objects form a surrogate pair.

IsSymbol(Char) IsSymbol(Char) IsSymbol(Char) IsSymbol(Char)

指示指定的 Unicode 字符是否属于符号字符类别。Indicates whether the specified Unicode character is categorized as a symbol character.

IsSymbol(String, Int32) IsSymbol(String, Int32) IsSymbol(String, Int32) IsSymbol(String, Int32)

指示指定字符串中位于指定位置处的字符是否属于符号字符类别。Indicates whether the character at the specified position in a specified string is categorized as a symbol character.

IsUpper(Char) IsUpper(Char) IsUpper(Char) IsUpper(Char)

指示指定的 Unicode 字符是否属于大写字母类别。Indicates whether the specified Unicode character is categorized as an uppercase letter.

IsUpper(String, Int32) IsUpper(String, Int32) IsUpper(String, Int32) IsUpper(String, Int32)

指示指定字符串中位于指定位置处的字符是否属于大写字母类别。Indicates whether the character at the specified position in a specified string is categorized as an uppercase letter.

IsWhiteSpace(Char) IsWhiteSpace(Char) IsWhiteSpace(Char) IsWhiteSpace(Char)

指示指定的 Unicode 字符是否属于空格类别。Indicates whether the specified Unicode character is categorized as white space.

IsWhiteSpace(String, Int32) IsWhiteSpace(String, Int32) IsWhiteSpace(String, Int32) IsWhiteSpace(String, Int32)

指示指定字符串中位于指定位置处的字符是否属于空格类别。Indicates whether the character at the specified position in a specified string is categorized as white space.

Parse(String) Parse(String) Parse(String) Parse(String)

将指定字符串的值转换为它的等效 Unicode 字符。Converts the value of the specified string to its equivalent Unicode character.

ToLower(Char, CultureInfo) ToLower(Char, CultureInfo) ToLower(Char, CultureInfo) ToLower(Char, CultureInfo)

使用指定的区域性特定格式设置信息将指定 Unicode 字符的值转换为它的小写等效项。Converts the value of a specified Unicode character to its lowercase equivalent using specified culture-specific formatting information.

ToLower(Char) ToLower(Char) ToLower(Char) ToLower(Char)

将 Unicode 字符的值转换为它的小写等效项。Converts the value of a Unicode character to its lowercase equivalent.

ToLowerInvariant(Char) ToLowerInvariant(Char) ToLowerInvariant(Char) ToLowerInvariant(Char)

使用固定区域性的大小写规则,将 Unicode 字符的值转换为其小写等效项。Converts the value of a Unicode character to its lowercase equivalent using the casing rules of the invariant culture.

ToString(IFormatProvider) ToString(IFormatProvider) ToString(IFormatProvider) ToString(IFormatProvider)

使用指定的区域性特定格式信息将此实例的值转换为它的等效字符串表示形式。Converts the value of this instance to its equivalent string representation using the specified culture-specific format information.

ToString(Char) ToString(Char) ToString(Char) ToString(Char)

将指定的 Unicode 字符转换为它的等效字符串表示形式。Converts the specified Unicode character to its equivalent string representation.

ToString() ToString() ToString() ToString()

将此实例的值转换为其等效的字符串表示形式。Converts the value of this instance to its equivalent string representation.

ToUpper(Char, CultureInfo) ToUpper(Char, CultureInfo) ToUpper(Char, CultureInfo) ToUpper(Char, CultureInfo)

使用指定的区域性特定格式设置信息将指定 Unicode 字符的值转换为它的大写等效项。Converts the value of a specified Unicode character to its uppercase equivalent using specified culture-specific formatting information.

ToUpper(Char) ToUpper(Char) ToUpper(Char) ToUpper(Char)

将 Unicode 字符的值转换为它的大写等效项。Converts the value of a Unicode character to its uppercase equivalent.

ToUpperInvariant(Char) ToUpperInvariant(Char) ToUpperInvariant(Char) ToUpperInvariant(Char)

使用固定区域性的大小写规则,将 Unicode 字符的值转换为其大写等效项。Converts the value of a Unicode character to its uppercase equivalent using the casing rules of the invariant culture.

TryParse(String, Char) TryParse(String, Char) TryParse(String, Char) TryParse(String, Char)

将指定字符串的值转换为它的等效 Unicode 字符。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) IComparable.CompareTo(Object) IComparable.CompareTo(Object) IComparable.CompareTo(Object)
IConvertible.GetTypeCode() IConvertible.GetTypeCode() IConvertible.GetTypeCode() IConvertible.GetTypeCode()
IConvertible.ToBoolean(IFormatProvider) IConvertible.ToBoolean(IFormatProvider) IConvertible.ToBoolean(IFormatProvider) IConvertible.ToBoolean(IFormatProvider)

注意不支持此转换。Note This conversion is not supported. 尝试这样做会引发 InvalidCastExceptionAttempting to do so throws an InvalidCastException.

IConvertible.ToByte(IFormatProvider) IConvertible.ToByte(IFormatProvider) IConvertible.ToByte(IFormatProvider) IConvertible.ToByte(IFormatProvider)

有关此成员的说明,请参见 ToByte(IFormatProvider)For a description of this member, see ToByte(IFormatProvider).

IConvertible.ToChar(IFormatProvider) IConvertible.ToChar(IFormatProvider) IConvertible.ToChar(IFormatProvider) IConvertible.ToChar(IFormatProvider)

有关此成员的说明,请参见 ToChar(IFormatProvider)For a description of this member, see ToChar(IFormatProvider).

IConvertible.ToDateTime(IFormatProvider) IConvertible.ToDateTime(IFormatProvider) IConvertible.ToDateTime(IFormatProvider) IConvertible.ToDateTime(IFormatProvider)

注意不支持此转换。Note This conversion is not supported. 尝试这样做会引发 InvalidCastExceptionAttempting to do so throws an InvalidCastException.

IConvertible.ToDecimal(IFormatProvider) IConvertible.ToDecimal(IFormatProvider) IConvertible.ToDecimal(IFormatProvider) IConvertible.ToDecimal(IFormatProvider)

注意不支持此转换。Note This conversion is not supported. 尝试这样做会引发 InvalidCastExceptionAttempting to do so throws an InvalidCastException.

IConvertible.ToDouble(IFormatProvider) IConvertible.ToDouble(IFormatProvider) IConvertible.ToDouble(IFormatProvider) IConvertible.ToDouble(IFormatProvider)

注意不支持此转换。Note This conversion is not supported. 尝试这样做会引发 InvalidCastExceptionAttempting to do so throws an InvalidCastException.

IConvertible.ToInt16(IFormatProvider) IConvertible.ToInt16(IFormatProvider) IConvertible.ToInt16(IFormatProvider) IConvertible.ToInt16(IFormatProvider)

有关此成员的说明,请参见 ToInt16(IFormatProvider)For a description of this member, see ToInt16(IFormatProvider).

IConvertible.ToInt32(IFormatProvider) IConvertible.ToInt32(IFormatProvider) IConvertible.ToInt32(IFormatProvider) IConvertible.ToInt32(IFormatProvider)

有关此成员的说明,请参见 ToInt32(IFormatProvider)For a description of this member, see ToInt32(IFormatProvider).

IConvertible.ToInt64(IFormatProvider) IConvertible.ToInt64(IFormatProvider) IConvertible.ToInt64(IFormatProvider) IConvertible.ToInt64(IFormatProvider)

有关此成员的说明,请参见 ToInt64(IFormatProvider)For a description of this member, see ToInt64(IFormatProvider).

IConvertible.ToSByte(IFormatProvider) IConvertible.ToSByte(IFormatProvider) IConvertible.ToSByte(IFormatProvider) IConvertible.ToSByte(IFormatProvider)

有关此成员的说明,请参见 ToSByte(IFormatProvider)For a description of this member, see ToSByte(IFormatProvider).

IConvertible.ToSingle(IFormatProvider) IConvertible.ToSingle(IFormatProvider) IConvertible.ToSingle(IFormatProvider) IConvertible.ToSingle(IFormatProvider)

注意不支持此转换。Note This conversion is not supported. 尝试这样做会引发 InvalidCastExceptionAttempting to do so throws an InvalidCastException.

IConvertible.ToString(IFormatProvider) IConvertible.ToString(IFormatProvider) IConvertible.ToString(IFormatProvider) IConvertible.ToString(IFormatProvider)
IConvertible.ToType(Type, IFormatProvider) IConvertible.ToType(Type, IFormatProvider) IConvertible.ToType(Type, IFormatProvider) IConvertible.ToType(Type, IFormatProvider)

有关此成员的说明,请参见 ToType(Type, IFormatProvider)For a description of this member, see ToType(Type, IFormatProvider).

IConvertible.ToUInt16(IFormatProvider) IConvertible.ToUInt16(IFormatProvider) IConvertible.ToUInt16(IFormatProvider) IConvertible.ToUInt16(IFormatProvider)

有关此成员的说明,请参见 ToUInt16(IFormatProvider)For a description of this member, see ToUInt16(IFormatProvider).

IConvertible.ToUInt32(IFormatProvider) IConvertible.ToUInt32(IFormatProvider) IConvertible.ToUInt32(IFormatProvider) IConvertible.ToUInt32(IFormatProvider)

有关此成员的说明,请参见 ToUInt32(IFormatProvider)For a description of this member, see ToUInt32(IFormatProvider).

IConvertible.ToUInt64(IFormatProvider) IConvertible.ToUInt64(IFormatProvider) IConvertible.ToUInt64(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.

另请参阅