CreateValidIdentifier()无法检查名称

时间:2016-05-03 16:23:03

标签: c# codedom csharpcodeprovider

我正在使用CreateProvider()来检查字符串是否是一个好的变量名。

var codeDomProvider =   CodeDomProvider.CreateProvider("C#");
var goodName        =   codeDomProvider.CreateValidIdentifier("ab.cd");

令人惊讶的是,它让我回到'ab.cd'。 Visual Studio从不允许这样的名称。这是怎么发生的?我再次尝试使用'System.Type':

var codeDomProvider =   CodeDomProvider.CreateProvider("C#");
var goodName        =   codeDomProvider.CreateValidIdentifier("System.Type");

它让我回到'System.Type'。这令人不安。

1 个答案:

答案 0 :(得分:1)

The documentation for CreateValidIdentifier()说:

  

CreateValidIdentifier测试标识符是否与保留或语言关键字冲突,如果是,则尝试返回不冲突的有效标识符名称。

因此,它并不意味着作为通用标识符验证方法。我认为它主要用于多语言环境,其中标识符可能与一种语言中的关键字冲突,但在其他语言中则不然。

我认为你要找的是IsValidIdentifier()

  

此方法测试标识符是否有效。

对于你的价值观,它确实会返回false。这将告诉您标识符无效,但它不会告诉您如何修复它,您必须自己弄明白。查看the source of IsValidIdentifier()可能对此有所帮助。