我正在使用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");
它还给我"系统类型"。这很麻烦。
CreateValidIdentifier()
的文档中写道:
CreateValidIdentifier测试标识符是否与保留关键字或语言关键字冲突,如果是,则尝试返回不冲突的有效标识符名称。
因此,它并不是一种通用的标识符验证方法。我相信它主要适用于多语言环境,在这种环境中,标识符可能会与一种语言中的关键字发生冲突,但在其他语言中则不会。
我想你要找的是IsValidIdentifier()
:
此方法测试标识符是否有效。
对于您的值,它确实返回false
。这会告诉你标识符无效,但不会告诉你如何修复它,你必须自己解决。查看IsValidIdentifier()
的来源可能会有所帮助。