Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在.NET framework中是否有字母的枚举类型?_C#_.net_Linq_Enums_Base Class Library - Fatal编程技术网

C# 在.NET framework中是否有字母的枚举类型?

C# 在.NET framework中是否有字母的枚举类型?,c#,.net,linq,enums,base-class-library,C#,.net,Linq,Enums,Base Class Library,我需要枚举类型,定义在项目中使用的字母。在.NET framework中有这样的枚举类型吗?在世界上常用的数百个字母表中,您想到了哪一个?这当然是问题所在 最糟糕的问题是,即使在采用相同字母表的语言中,字母顺序也不相同。例如,丹麦人把å放在第一位而不是最后一位。由于枚举的属性非常复杂,所以不可能找到一个可以表示字母表的枚举。除非它是一个只在世界上一小部分地区使用的非常模糊的程序,或者你的程序不会运行很远。在互联网时代,这是不太可能的 确保您不尝试,保留它char。永远不要忽视对System.St

我需要枚举类型,定义在项目中使用的字母。在.NET framework中有这样的枚举类型吗?

在世界上常用的数百个字母表中,您想到了哪一个?这当然是问题所在

最糟糕的问题是,即使在采用相同字母表的语言中,字母顺序也不相同。例如,丹麦人把å放在第一位而不是最后一位。由于枚举的属性非常复杂,所以不可能找到一个可以表示字母表的枚举。除非它是一个只在世界上一小部分地区使用的非常模糊的程序,或者你的程序不会运行很远。在互联网时代,这是不太可能的


确保您不尝试,保留它
char
。永远不要忽视对System.StringComparison的需要。在世界上常用的数百个字母中,你想到了哪一个?这当然是问题所在

最糟糕的问题是,即使在采用相同字母表的语言中,字母顺序也不相同。例如,丹麦人把å放在第一位而不是最后一位。由于枚举的属性非常复杂,所以不可能找到一个可以表示字母表的枚举。除非它是一个只在世界上一小部分地区使用的非常模糊的程序,或者你的程序不会运行很远。在互联网时代,这是不太可能的


确保您不尝试,保留它
char
。而且永远不要忽视System.StringComparison的需要鉴于没有可用的枚举,生成包含字符集所有字母的可枚举(IEnumerable of Char)的快速方法是

 var letters = Enumerable.Range(0, 255).Select(Convert.ToChar).Where(Char.IsLetter);
您可以使用IsDigit或isPunchuation“或”方法组以包含其他字母

注:该方法存在局限性和假设。检查这些

Unicode字符分为多个类别。角色的 类别是它的属性之一。例如,角色可能是 大写字母、小写字母、十进制数字、数字 字母编号、连接器标点符号、数学符号或货币 象征。UnicodeCegory类返回Unicode的类别 性格有关Unicode字符的详细信息,请参阅Unicode 标准

资料来源:

NET Framework使用Char结构来表示Unicode 性格Unicode标准使用 唯一的21位标量数,称为代码点,并定义 UTF-16编码格式,指定如何将代码点编码为 一个或多个16位值的序列。每个16位值的范围为 十六进制0x0000到0xFFFF,并存储在字符结构中。 Char对象的值是其16位数字(序数)值


来源:

鉴于没有可用的枚举,生成包含字符集所有字母的可枚举(IEnumerable of Char)的快速方法是

 var letters = Enumerable.Range(0, 255).Select(Convert.ToChar).Where(Char.IsLetter);
您可以使用IsDigit或isPunchuation“或”方法组以包含其他字母

注:该方法存在局限性和假设。检查这些

Unicode字符分为多个类别。角色的 类别是它的属性之一。例如,角色可能是 大写字母、小写字母、十进制数字、数字 字母编号、连接器标点符号、数学符号或货币 象征。UnicodeCegory类返回Unicode的类别 性格有关Unicode字符的详细信息,请参阅Unicode 标准

资料来源:

NET Framework使用Char结构来表示Unicode 性格Unicode标准使用 唯一的21位标量数,称为代码点,并定义 UTF-16编码格式,指定如何将代码点编码为 一个或多个16位值的序列。每个16位值的范围为 十六进制0x0000到0xFFFF,并存储在字符结构中。 Char对象的值是其16位数字(序数)值


来源:

您可能想看看这个答案:简短的答案是“否”,但字母也被称为CHAR,这是一个数字。因此,您可以直接使用char而不是enum。您可以将其解释为UTF-32编码的Unicode代码点(当然,大多数值都在Unicode范围之外,但这没有问题)。请注意,
char
struct()具有静态方法
ConvertFromUtf32
ConvertToUtf32
,您可以使用这些方法。如果您的所有Unicode字符都在中,那么就更容易了:只需在
char
之间转换。不过要注意规范化。你可能想看看这个答案:简短的答案是“否”,但字母也被称为CHAR,这是一个数字。因此,您可以直接使用char而不是enum。您可以将其解释为UTF-32编码的Unicode代码点(当然,大多数值都在Unicode范围之外,但这没有问题)。请注意,
char
struct()具有静态方法
ConvertFromUtf32
ConvertToUtf32
,您可以使用这些方法。如果您的所有Unicode字符都在中,那么就更容易了:只需在
char
之间转换。不过要注意规范化。顺序(排序规则)可能与他的使用无关。(即使ASCII字符在不同的文化中也可能有不同的排序规则,例如西弗里斯语puts
Y
near
I
,爱沙尼亚语puts
Z
near
S
)任何unicode字符都可以很容易地放入
Int32
(通过UTF-32)。当然Unicode规范化将是一个问题。我出生在那里:)Y实际上是IJ的连字。通常是w