C# CreateValidIdentifier()无法检查名称

C# CreateValidIdentifier()无法检查名称,c#,codedom,csharpcodeprovider,C#,Codedom,Csharpcodeprovider,我正在使用CreateProvider()检查字符串是否是好的变量名 var codeDomProvider = CodeDomProvider.CreateProvider("C#"); var goodName = codeDomProvider.CreateValidIdentifier("ab.cd"); 令人惊讶的是,它还给了我“ab.cd”。VisualStudio从不允许使用这样的名称。这是怎么发生的?我用“System.Type”再次尝试: var cod

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

var codeDomProvider =   CodeDomProvider.CreateProvider("C#");
var goodName        =   codeDomProvider.CreateValidIdentifier("ab.cd");
令人惊讶的是,它还给了我“ab.cd”。VisualStudio从不允许使用这样的名称。这是怎么发生的?我用“System.Type”再次尝试:

var codeDomProvider =   CodeDomProvider.CreateProvider("C#");
var goodName        =   codeDomProvider.CreateValidIdentifier("System.Type");
它返回“System.Type”。这很麻烦。

说:

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

因此,它不是一种通用的标识符验证方法。我相信它主要适用于多语言环境,在这种环境中,标识符可能与一种语言中的关键字冲突,但在其他语言中不会冲突

我想你要找的是:

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


对于您的值,它确实返回
false
。这将告诉您标识符无效,但它不会告诉您如何修复它,您必须自己解决这个问题。看一下可能会有所帮助。

您咨询过吗?好的,我看了。我错过了什么?谢谢。我创造了自己的方法来处理这种情况。