我正在使用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'。这令人不安。
答案 0 :(得分:1)
The documentation for CreateValidIdentifier()
说:
CreateValidIdentifier测试标识符是否与保留或语言关键字冲突,如果是,则尝试返回不冲突的有效标识符名称。
因此,它并不意味着作为通用标识符验证方法。我认为它主要用于多语言环境,其中标识符可能与一种语言中的关键字冲突,但在其他语言中则不然。
我认为你要找的是IsValidIdentifier()
:
此方法测试标识符是否有效。
对于你的价值观,它确实会返回false
。这将告诉您标识符无效,但它不会告诉您如何修复它,您必须自己弄明白。查看the source of IsValidIdentifier()
可能对此有所帮助。