2013-08-02 58 views

回答

5

没有办法直接为此。在大部分.NET语言,identifiers可以是任何Unicode“信”或下划线,所以你可以很容易地写为:

bool IsValidIdentifierStart(char ch) 
{ 
    return ch == '_' || char.IsLetter(ch); 
} 

注意,CLR更加灵活。 CLS规范,章8.5.1规定:

大会应遵循的技术报告的附件7 Unicode标准3.0执政的字符集的15才能启动和列入标识,可上线http://www.unicode.org/unicode/reports/tr15/tr15-18.html。标识符须符合Unicode范式C.

定义的规范格式。这允许运行时使用不是由许多标准语言permiitted标识符。

+0

该链接适用于VB.Net。 [这是一个用于C#](http://msdn.microsoft.com/en-us/library/aa664670.aspx)。每种语言被认为是有效的标识符可能不同。 .Net支持的其他许多语言的行为可能会有所不同。 –

+0

@MattJohnson真 - 我编辑得更清晰;) –

+0

非常感谢里德。 –

1

你可以使用Char.IsLetter()作为Unicode标识符必须以字母开始......

编辑: IsLetter()将为下划线,这是无效的返回true,这样也应该检查。

+0

在.NET中不是这样 - 标识符也可以以下划线开头,这对于'IsLetter'不起作用。 –

+0

@ReedCopsey噢,谢谢。 – Tonithy

+0

@Reed Copsey:没有一种叫做“.NET”的语言。 – jason

0

如果您需要超过ch == '_' || char.IsLetter(ch)建议Reed Copsey比检查 Char.GetUnicodeCategory它给你详细的Unicode字符分类。