CreateValidIdentifier()无法检查名称



我正在使用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()的来源可能会有所帮助。

相关内容

  • 没有找到相关文章

最新更新