ZetCode

C# char 类型

上次修改时间:2023 年 9 月 6 日

在本文中,我们将展示如何在 C# 中使用 char 类型。

C# 中的字符串是 UTF-16 代码单元的序列。 System.Char 类型将字符表示为 UTF-16 代码单元。

char 关键字是 System.Char 类型的别名。

.NET 使用 Char 结构通过 UTF-16 编码来表示 Unicode 代码点。 Char 对象的值是其 16 位数字(序号)值。

类型 范围 大小 .NET 类型
char U+0000 到 U+FFFF 16 位 System.Char

char 类型的默认值为 \0, (U+0000)。

注意:char 不一定等同于单个 Unicode 字符。在某些情况下,使用多个 16 位代码单元来表示单个 Unicode 字符。

在 C# 代码中,字符可以表示为

C# char 简单示例

以下是使用 char 类型的简单示例。

Program.cs
char a = 'f';
Console.WriteLine(a);

Console.WriteLine(a.GetType());
Console.WriteLine(typeof(char));

Console.WriteLine((int)char.MaxValue);
Console.WriteLine((int)char.MinValue);

我们定义一个 char 变量并显示其类型以及最小和最大可能值。

$ dotnet run
f
System.Char
System.Char
65535
0

C# char 字面量 & 转义序列

Char 值用单引号括起来。

Program.cs
char c = 'л';
Console.WriteLine(c);

char c2 = '\u043B';
Console.WriteLine(c2);

char c3 = '\x43b';
Console.WriteLine(c3);

该示例使用字符字面量、Unicode 转义序列和十六进制转义序列表示三个 char。

$ dotnet run
л
л
л

C# char 数组

为了将 char 数组转换为字符串,我们只需将该数组传递给其构造函数。 要将字符串转换为 char 数组,我们调用 ToCharArray 方法。

Program.cs
char[] vals = { 'a', 'n', ' ', 'o', 'l', 'd', ' ', 'f', 'a', 'l', 'c', 'o', 'n' };
Console.WriteLine(vals);
Console.WriteLine(vals.GetType());

Console.WriteLine("------------------------");

string msg = new(vals);
Console.WriteLine(msg);
Console.WriteLine(msg.GetType());

Console.WriteLine("------------------------");

char[] vals2 = msg.ToCharArray();
Console.WriteLine(vals2);
Console.WriteLine(vals2.GetType());

在该示例中,我们将 char 数组转换为字符串,然后再将字符串转换回 char 数组。

$ dotnet run
an old falcon
System.Char[]
------------------------
an old falcon
System.String
------------------------
an old falcon
System.Char[]

C# 迭代字符串元素

C# 字符串是 char 元素的序列。

Program.cs
string msg = "an old falcon";

foreach (var e in msg)
{
    Console.Write($"{e} ");
}

Console.WriteLine("\n-----------------------------");

foreach (var e in msg)
{
    byte b = (byte)e;
    Console.Write($"{b} ");
}

Console.WriteLine("\n-----------------------------");

byte[] data = { 97, 110, 32, 111, 108, 100, 32, 102, 97, 108, 99, 111, 110 };

foreach (var e in data)
{
    char c = (char)e;
    Console.Write($"{c} ");
}

Console.WriteLine();

该示例循环访问字符串并分别输出每个 char。 它将字符串转换为字节值,然后将字节值转换为字符串。

foreach (var e in msg)
{
    Console.Write($"{e} ");
}

在 foreach 循环中,我们遍历字符串的元素。

foreach (var e in msg)
{
    byte b = (byte)e;
    Console.Write($"{b} ");
}

我们循环遍历字符串并将每个元素强制转换为字节值。

byte[] data = { 97, 110, 32, 111, 108, 100, 32, 102, 97, 108, 99, 111, 110 };

foreach (var e in data)
{
    char c = (char)e;
    Console.Write($"{c} ");
}

我们定义一个字节数组。 我们循环遍历该数组并将每个字节强制转换为 char。

$ dotnet run
a n   o l d   f a l c o n
-----------------------------
97 110 32 111 108 100 32 102 97 108 99 111 110
-----------------------------
a n   o l d   f a l c o n

C# char.GetUnicodeCategory

char.GetUnicodeCategory 将指定的 Unicode 字符分类到由其中一个 UnicodeCategory 值标识的组中。

Program.cs
string msg = "There are 22 apples in the basket.";

foreach (var e in msg)
{
    var category = char.GetUnicodeCategory(e);
    Console.WriteLine($"{e} - {category}");

}

在该示例中,我们显示给定字符串中每个元素的 Unicode 类别。

$ dotnet run
T - UppercaseLetter
h - LowercaseLetter
e - LowercaseLetter
r - LowercaseLetter
e - LowercaseLetter
  - SpaceSeparator
a - LowercaseLetter
r - LowercaseLetter
e - LowercaseLetter
  - SpaceSeparator
2 - DecimalDigitNumber
2 - DecimalDigitNumber
  - SpaceSeparator
a - LowercaseLetter
p - LowercaseLetter
p - LowercaseLetter
l - LowercaseLetter
e - LowercaseLetter
s - LowercaseLetter
  - SpaceSeparator
i - LowercaseLetter
n - LowercaseLetter
  - SpaceSeparator
t - LowercaseLetter
h - LowercaseLetter
e - LowercaseLetter
  - SpaceSeparator
b - LowercaseLetter
a - LowercaseLetter
s - LowercaseLetter
k - LowercaseLetter
e - LowercaseLetter
t - LowercaseLetter
. - OtherPunctuation

来源

char 类型

在本文中,我们使用了 C# 语言中的 char 类型。

作者

我的名字是 Jan Bodnar,我是一位充满激情的程序员,拥有丰富的编程经验。 我自 2007 年以来一直在撰写编程文章。 迄今为止,我已经撰写了 1,400 多篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出所有 C# 教程