在.net中,有没有办法检测某个单词是否是给定.net语言中的关键字?
我正在为这个项目使用一个相当简单的代码生成器,我想开始自动化它.现在我手工完成每一个,所以解决出现的任何问题都很容易.但是,一旦这种情况自动开始,我将需要一种方法来检测我需要用作标识符的单词是否是关键字.我仍然可以使用它,我只需要正确引用它.
我知道我可以简单地引用我生成的所有内容,但我想保持生成的代码很漂亮:)
我需要引用的一类例子:
vb: Public [Class] As String = "CLASS" c#: public String @class = "CLASS";
Daniel LeChe.. 7
也许你正在寻找 IsValidIdentifier
[
IsValidIdentifier
] return [s]仅当值符合语言规则且不与关键字冲突时才为true .
要么 CreateEscapedIdentifier
CreateEscapedIdentifier
测试标识符是否与任何保留或语言关键字冲突,如果是,则返回具有特定于语言的转义码格式的等效名称
例如:
CSharpCodeProvider csProvider = new CSharpCodeProvider(); bool isValid1 = csProvider.IsValidIdentifier("class"); // returns false string escapedId1 = csProvider.CreateEscapedIdentifier("foo"); // escapedId1 = "foo" string escapedId2 = csProvider.CreateEscapedIdentifier("do"); // escapedId2 = "@do" string escapedId3 = csProvider.CreateEscapedIdentifier("AndAlso"); // escapedId3 = "AndAlso" (not reserved in c#) VBCodeProvider vbProvider = new VBCodeProvider(); string escapedId4 = vbProvider.CreateEscapedIdentifier("AndAlso"); // escapedId4 = "[AndAlso]" (reserved in VB)
似乎扩展/使用此设施以满足您的需求并不会太难.
也许你正在寻找 IsValidIdentifier
[
IsValidIdentifier
] return [s]仅当值符合语言规则且不与关键字冲突时才为true .
要么 CreateEscapedIdentifier
CreateEscapedIdentifier
测试标识符是否与任何保留或语言关键字冲突,如果是,则返回具有特定于语言的转义码格式的等效名称
例如:
CSharpCodeProvider csProvider = new CSharpCodeProvider(); bool isValid1 = csProvider.IsValidIdentifier("class"); // returns false string escapedId1 = csProvider.CreateEscapedIdentifier("foo"); // escapedId1 = "foo" string escapedId2 = csProvider.CreateEscapedIdentifier("do"); // escapedId2 = "@do" string escapedId3 = csProvider.CreateEscapedIdentifier("AndAlso"); // escapedId3 = "AndAlso" (not reserved in c#) VBCodeProvider vbProvider = new VBCodeProvider(); string escapedId4 = vbProvider.CreateEscapedIdentifier("AndAlso"); // escapedId4 = "[AndAlso]" (reserved in VB)
似乎扩展/使用此设施以满足您的需求并不会太难.