Come faccio a eseguire l'escape dei caratteri nei commenti c #?


112

Mi sono reso conto oggi che non so come sfuggire ai caratteri nei commenti per C #. Voglio documentare una classe C # generica, ma non posso scrivere un esempio corretto poiché non so come eseguire l'escape dei caratteri <e >. Devo usare &lt;e &gt;? Non mi piace se questo è il caso poiché voglio che sia facile leggere il commento nel documento effettivo, quindi non devo generare alcun tipo di documento di codice per poter leggere il codice di esempio.


1
Potresti mostrare un commento di esempio?
BoltClock


1
@Mark: hai ragione, ma non è solo XML ... stavo cercando di scrivere un esempio per i generici che non è XML ma usa '<' e '>'. Ma la soluzione è la stessa per entrambi.
Tomas Jansson

Data la popolarità dei modelli in C ++, Java, C # ... quali possibili scuse ha Microsoft per utilizzare delimitatori XML incompleti? La solita mancanza di lucidità e lungimiranza.
Rick O'Shea

Risposte:


141

Se è necessario eseguire l'escape dei caratteri nei commenti XML, è necessario utilizzare le entità carattere, quindi è <necessario eseguire l'escape come &lt;, come nella domanda.

L'alternativa all'escape è usare le CDATAsezioni, allo stesso effetto.

Come hai notato, questo produrrebbe una buona documentazione, ma un commento orribile da leggere ...


19
Solo per riferimento <sarebbe &lt;e >sarebbe &gt;. Ad esempio,List&lt;string&gt; myStringList = new List&lt;string&gt;();
Arvo Bowen

@ArvoBowen Solo nel caso in cui a qualcuno manchi l'ovvio, lt/ gtsta rispettivamente per "minore di" / "maggiore di".
Lukas Juhrich

1
È interessante notare che, solo <ha bisogno di ottenere fuggito con &lt;, >possono soggiornare in quanto è: List&lt;string> myStringList = new List&lt;string>();. Almeno questo funziona in intellisense. Stranamente, CDATA non funziona in intellisense. Non ho controllato come appare nei documenti generati automaticamente.
Peter Huber

Posso confermare che VS 2013 non esegue il rendering CDATAin intellisense. &lt;rende il commento difficile da leggere.
Alex

52

Nei semplici commenti C # puoi usare qualsiasi carattere (tranne */se hai iniziato il commento con /*, o il carattere di nuova riga se hai iniziato il commento con //). Se si utilizzano commenti XML, è possibile utilizzare una sezione CDATA per includere i caratteri "<" e ">".

Vedere questo articolo del blog MSDN per ulteriori informazioni sui commenti XML in C #.


Per esempio

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

12
Probabilmente hai ragione se vuoi generare documenti html di bell'aspetto, ma sono più interessante ottenere i suggerimenti intellisense in VS corretti, e per questo sembra che devo usare l'escape XML. Ma +1 per l'alternativa.
Tomas Jansson

2
Hmm, la spazzatura illeggibile della macchina nei miei commenti aiuta solo se ci prendiamo il tempo di costruire il nostro file di documento quando la vasta, vasta, vasta (ho menzionato la vasta?) La maggior parte dei casi d'uso sta leggendo i commenti nel sorgente (preferibilmente un'interfaccia) .
Rick O'Shea

19

Hai detto "Voglio che sia facile leggere il commento nel documento vero e proprio". Sono d'accordo.

Gli sviluppatori trascorrono la maggior parte della loro vita nel codice , senza esaminare i documenti generati automaticamente. Questi sono ottimi per le librerie di terze parti come la creazione di grafici, ma non per lo sviluppo interno in cui lavoriamo con tutto il codice. Sono un po 'scioccato dal fatto che MSFT non abbia trovato una soluzione che supporti meglio gli sviluppatori qui. Abbiamo regioni che espandono / comprimono dinamicamente il codice ... perché non possiamo avere un interruttore sul posto per il rendering dei commenti (tra testo non elaborato e commento XML elaborato o tra testo non elaborato e commento HTML elaborato) ?. Sembra che dovrei avere alcune funzionalità HTML elementari nei miei commenti sul prologo di metodo / classe (testo in rosso, corsivo, ecc.). Sicuramente un IDE potrebbe funzionare un po 'di magia di elaborazione HTML per ravvivare i commenti in linea.

La mia soluzione di hack-of-a-solution : cambio '<' in "{" e '> "in"} ". Questo sembra coprirmi per il tipico commento sullo stile di utilizzo di esempio, incluso il tuo esempio specifico. Imperfetto, ma pragmatico dato il problema di leggibilità (e problemi con la colorazione dei commenti IDE che derivano dall'uso di '<')


5
Il tuo "trucco per una soluzione" sembra essere più corretto di quanto pensi. In base a ciò, il riconoscimento del compilatore tra parentesi graffe come parentesi angolari e le associa correttamente .
RubberDuck

8

I commenti XML in C # sono scritti in XML, quindi useresti il ​​normale codice di escape XML.

Per esempio...

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

5

Ho trovato una soluzione vivibile a questo problema includendo semplicemente due esempi: una versione di difficile lettura nei commenti XML con caratteri di escape e un'altra versione leggibile utilizzando //commenti convenzionali .

Semplice ma efficace.


0

Meglio che usare {...} sta usando ≤ ... ≥ (segno minore o uguale, segno maggiore o uguale, U2264 e U2265 in Unicode). Sembrano parentesi angolari sottolineate ma ancora decisamente parentesi angolari! E aggiunge solo un paio di byte al file di codice.


0

Ancora meglio provare U2280 e U2281: basta copiare e incollare dall'elenco dei caratteri Unicode (sezione operatori matematici).


Gli operatori Unicode sono OK quando vengono utilizzati per rappresentare operatori matematici effettivi, scarsi se vengono utilizzati in frammenti di codice che si trovano in un commento (ad esempio List<int>). Pensa ad esempio a copiare e incollare lo snippet di codice.
Palec

puoi fornire un esempio di come utilizzarlo in un commento? mai usato caratteri Unicode davvero
ClementWalter

1
Copia e incolla il carattere come descritto sopra.
Paul Coulson
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.