2017-10-04 5 views
5

Roslyn(Microsoft.CodeAnalysis)ではSyntaxTokenTextValueTextのフィールドを持っています。これまで私が見てきたすべての状況において、これらの2つの値は同じです。 ValueTextにはドキュメントがあり、Textには含まれていません。私が知る限り、それは唯一の違いです。テキストがValueTextと異なる場合があります

なぜ両方存在するのですか?どのような状況で彼らは異なっているでしょうか、なぜですか?

答えて

10

なぜ両方存在するのですか?

これらは時々異なっていて、どちらも便利です。

どのような状況で異なるのでしょうか、なぜですか?

int @interface = 123; 
@interface

トークンのText@interfaceあります。 ValueTextinterfaceです。テキストはのように、ソースコードに表示されているテキストは何ですか?値のテキストはを論理的に示していますが、このテキストは何ですか?識別子として使用されるエスケープされたキーワードは、論理的にキーワードのテキストです。これが識別子の名前です。

テキストと値のテキストが異なる場合があります。あなたが何かを見つけることができるかどうか見てください。

+0

'\ u0061 \ u0062 \ u0063'の' Text 'はおそらく '\ u0061 \ u0062 \ u0063'と' ValueText'の 'abc'を持っています。 – Brian

+0

数字リテラルも可能です: '1.2f';テキストは '1.2f'、ValueTextは' 1.2'です。 – InBetween

関連する問題