【问题标题】:CreateValidIdentifier() fails to check nameCreateValidIdentifier() 无法检查名称
【发布时间】:2016-05-03 16:23:02
【问题描述】:

我正在使用 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'。这很麻烦。

【问题讨论】:

标签: c# codedom csharpcodeprovider


【解决方案1】:

The documentation for CreateValidIdentifier() 说:

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

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

我想你要找的是IsValidIdentifier():

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

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

【讨论】:

  • 谢谢。我创建了自己的方法来处理这种情况。
猜你喜欢
  • 2013-07-09
  • 2016-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-30
  • 2017-04-03
  • 1970-01-01
  • 2018-08-05
相关资源
最近更新 更多