C#コメントの文字をエスケープするにはどうすればよいですか?


112

今日、C#のコメントで文字をエスケープする方法がわからないことに気付きました。ジェネリックC#クラスをドキュメント化したいのですが、<および>文字をエスケープする方法がわからないため、適切な例を書くことができません。私は使用する必要が&lt;あり&gt;ますか?実際のドキュメントのコメントを読みやすくしたいので、そのような場合は気に入らないので、サンプルコードを読み取るためになんらかのコードドキュメントを生成する必要はありません。


1
コメントの例を見せていただけますか?
BoltClock


1
@マーク:そうですが、それはXMLだけではありません...私は、ジェネリックのXMLではない例を書こうとしていましたが、「<」と「>」を使用しています。しかし、解決策はどちらでも同じです。
Tomas Jansson

C ++、Java、C#でのテンプレートの人気を考えると、Microsoftは中途半端なXML区切り文字を使用するためにどのような言い訳をすることができますか?明快さと先見性の通常​​の欠如。
Rick O'Shea 2018年

回答:


141

XMLコメントで文字をエスケープする必要がある場合は、文字エンティティを使用<する必要があるため&lt;、質問のようにとしてエスケープする必要があります。

エスケープの代わりにCDATA、セクションを使用して同じ効果を得ることができます。

あなたが指摘したように、これは見栄えの良いドキュメントを生成しますが、読むための恐ろしいコメント...


19
参考まで<になります&lt;>なります&gt;。例として、List&lt;string&gt; myStringList = new List&lt;string&gt;();
Arvo Bowen、

@ArvoBowen誰かが明白なものを見逃している場合に備えて、lt/ gtはそれぞれ「より小さい」/「より大きい」を表します。
Lukas Juhrich

1
興味深いことに、だけ<でエスケープを取得する必要があり&lt;>そのまま滞在することができますList&lt;string> myStringList = new List&lt;string>();。少なくともこれはインテリセンスで機能します。不思議なことに、CDATA インテリセンスでは機能しません。自動生成されたドキュメントでどのように表示されるかは確認しませんでした。
Peter Huber

VS 2013がCDATAインテリセンスでレンダリングされないことを確認できます。&lt;コメントが読みにくくなります。
アレックス

52

プレーンC#コメントでは、任意の文字を使用できます(*/コメントを/*で開始した場合、またはコメントをで開始した場合は改行文字を除く//)。XMLコメントを使用している場合は、CDATAセクションを使用して「<」および「>」の文字を含めることができます。

C#でのXMLコメントの詳細については、このMSDNブログの記事を参照してください。


例えば

/// <summary>
/// Here is how to use the class: <![CDATA[ <test>Data</test> ]]>
/// </summary>

12
見栄えの良いhtmlドキュメントを生成したい場合はおそらく正しいと思いますが、VSのインテリセンスのヒントを正しく取得することの方が興味深いので、XMLエスケープを使用する必要があるようです。ただし、代替案の場合は+1。
Tomas Jansson

2
ええと、私のコメントの読みにくいマシンのゴミは、広大な広大な(私が広大だと言いましたか?)大多数のユースケースがソース(できればインターフェース)のコメントを読んでいるときにドキュメントファイルを作成するのに時間をかけた場合にのみ役立ちます。
Rick O'Shea 2018年

19

「実際のドキュメントのコメントを読みやすくしたい」とおっしゃっていました。同意する。

開発者は、自動生成されたドキュメントを熟読するのではなく、ほとんどの作業をコードに費やしています。これらはチャートのようなサードパーティのライブラリには最適ですが、すべてのコードを処理する社内開発には適していません。ここで、MSFTが開発者をより良くサポートするソリューションを考え出していないことに、ちょっとショックを受けました。コードを動的に展開/折りたたむ領域があります...インプレースコメントレンダリングの切り替え(生のテキストと処理されたXMLコメントの間、または生のテキストと処理されたHTMLコメントの間)ができないのはなぜですか?メソッド/クラスのプロローグコメント(赤いテキスト、斜体など)にいくつかの基本的なHTML機能が必要なようです。確かに、IDEはインラインHTMLコメントを盛り上げるために少しHTML処理の魔法を働かせることができます。

私のソリューションのハックソリューション: '<'を "{"に変更し、 '> "を"} "に変更します。これは、特定の例を含む一般的な使用例のコメントの説明に含まれているようです。不完全ですが、実用的です読みやすさの問題(および「<」を使用したときに発生するIDEコメントの色付けの問題)


5
あなたの「解決策のハック」はあなたが思っているよりも正しいようです。これによれば、コンパイラは山括弧として中括弧を認識し、正しくバインドします
RubberDuck、2015年

8

C#XMLコメントはXMLで記述されるため、通常のXMLエスケープを使用します。

例えば...

<summary>Here is an escaped &lt;token&gt;</summary>

5

この問題に住みやすい解決策は、2つの例を含めるだけであることがわかりました。1つは読みにくいXMLコメントのエスケープ文字付きバージョン、もう1つは従来の//コメントを使用した読みやすいバージョンです。

シンプルですが効果的です。


0

{...}を使用するよりも、≤...≥を使用する方がよい(以下の等号、以上の等号、UnicodeのU2264およびU2265)。下線付きの山括弧のように見えますが、それでも間違いなく山括弧です!そして、あなたのコードファイルに数バイトを追加するだけです。


0

U2280とU2281を試してみてください-Unicode 文字のリスト(数学演算子のセクション)からコピーして貼り付けてください。


Unicode演算子は、実際の数学演算子を表すために使用される場合は問題ありませんが、たまたまコメント内にあるコードスニペット(たとえばList<int>)で使用される場合は不十分です。たとえば、コードスニペットをコピーして貼り付けることを検討してください。
Palec 2017年

コメントでこれを使用する方法の例を提供できますか?実際にユニコード文字を使用したことがない
ClementWalter 2017

1
上記のように文字をコピーして貼り付けます。
ポールクルソン2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.