.NET框架中的字母是否有枚举类型?

时间:2013-10-26 20:38:49

标签: c# .net linq enums base-class-library

我需要枚举类型来定义在项目中使用的字母。 .NET框架中是否有这样的枚举类型?

2 个答案:

答案 0 :(得分:6)

您想到的世界上常见的数百种字母表中的哪一种?当然,这是一个问题。

最糟糕的问题是,即使采用相同字母的语言,字母顺序也不尽相同。例如,丹麦人把第一个而不是最后一个。对于枚举的削弱属性,不可能提出可以表示字母表的枚举。除非它是一个非常模糊的,只在世界上的一个小部分使用,或者你的程序不会走得很远。在互联网时代不太可能。

请确保您不要尝试,保留char。永远不要忽视对System.StringComparison

的需求

答案 1 :(得分:0)

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

 var letters = Enumerable.Range(0, 255).Select(Convert.ToChar).Where(Char.IsLetter);

你可以'或'使用IsDigit或IsPunctuation的方法组来包含其他字母。

注意:这种方法存在局限性和假设。检查一下......

  

Unicode字符分为几类。一个角色   category是其中一个属性。例如,一个角色可能是   大写字母,小写字母,十进制数字,a   字母编号,连接符标点符号,数学符号或货币   符号。 UnicodeCategory类返回Unicode的类别   字符。有关Unicode字符的更多信息,请参阅Unicode   标准。

来源:How to determine if a CultureInfo instance supports Latin characters

  

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

来源:http://msdn.microsoft.com/en-us/library/System.Char(v=vs.110).aspx