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 に答える