1

我正在使用 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'。这令人不安。

4

1 回答 1

2

的文档CreateValidIdentifier()说:

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

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

我认为您正在寻找的是IsValidIdentifier()

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

对于您的价值观,它确实返回false. 这将告诉您标识符无效,但不会告诉您如何修复它,您必须自己弄清楚。查看来源IsValidIdentifier()可能会有所帮助。

于 2016-05-08T13:22:01.660 回答