C # 주석에서 문자를 어떻게 이스케이프합니까?


112

나는 오늘 C # 주석에서 문자를 이스케이프하는 방법을 모른다는 것을 깨달았습니다. 일반 C # 클래스를 문서화하고 싶지만 <>문자 를 이스케이프하는 방법을 모르기 때문에 적절한 예제를 작성할 수 없습니다 . &lt;과 를 사용해야 &gt;합니까? 실제 문서에서 주석을 쉽게 읽을 수 있도록하여 예제 코드를 읽을 수 있도록 코드 문서를 생성 할 필요가 없기 때문에 그런 경우가 마음에 들지 않습니다.


1
댓글 예시를 보여 주시겠습니까?
BoltClock


1
@Mark : 맞아요.하지만 XML만이 아닙니다 ... 저는 XML이 아닌 제네릭에 대한 예제를 작성하려고했지만 '<'와 '>'를 사용합니다. 그러나 해결책은 둘 다 동일합니다.
Tomas Jansson

C ++, Java, C #에서 템플릿의 인기를 감안할 때 Microsoft는 반쯤 구운 XML 구분 기호를 사용하는 데 어떤 변명을 할 수 있습니까? 일반적으로 명확성과 예지력이 부족합니다.
Rick O'Shea

답변:


141

XML 주석에서 문자를 이스케이프해야하는 경우 문자 엔터티를 사용해야하므로 질문에서와 같이로 <이스케이프해야합니다 &lt;.

이스케이프의 대안 CDATA은 동일한 효과를 위해 섹션을 사용하는 것입니다 .

당신이 언급했듯이, 이것은보기 좋은 문서를 생성 할 것이지만 읽기에는 끔찍한 주석이 있습니다.


19
그냥 참조 할 <&lt;>&gt;. 예를 들어,List&lt;string&gt; myStringList = new List&lt;string&gt;();
Arvo Bowen

@ArvoBowen 누군가가 명백한 것을 놓친 경우를 대비하여 lt/ gt각각 "보다 작음"/ "보다 큼"을 나타냅니다.
루카스 Juhrich

1
흥미롭게도, 만 <에 탈출받을 필요가 &lt;, >그대로 머물 수 있습니다 List&lt;string> myStringList = new List&lt;string>();. 적어도 이것은 지능적으로 작동합니다. 이상하게도 CDATA 지능적으로 작동하지 않습니다. 자동 생성 된 문서에서 어떻게 보이는지 확인하지 않았습니다.
Peter Huber

VS 2013이 CDATAintellisense에서 렌더링되지 않음을 확인할 수 있습니다. &lt;댓글을 읽기 어렵게 만듭니다.
Alex

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

19

"실제 문서의 주석을 쉽게 읽을 수 있도록하고 싶다"고하셨습니다. 나는 동의한다.

개발자는 자동 생성 된 문서를 숙독하지 않고 대부분의 삶 을 코드에서 보냅니다 . 차트 작성과 같은 타사 라이브러리에는 좋지만 모든 코드로 작업하는 사내 개발에는 적합하지 않습니다. MSFT가 개발자를 더 잘 지원하는 솔루션을 찾지 못했다는 사실에 다소 충격을 받았습니다. 코드를 동적으로 확장 / 축소하는 영역이 있습니다 ... 인플레 이스 주석 렌더링 토글 (원시 텍스트와 처리 된 XML 주석 간 또는 원시 텍스트와 처리 된 HTML 주석 간)이없는 이유는 무엇입니까? 메서드 / 클래스 프롤로그 주석 (빨간색 텍스트, 기울임 꼴 등)에 기본 HTML 기능이 있어야하는 것 같습니다. 확실히 IDE는 인라인 주석에 활기를 불어 넣기 위해 약간의 HTML 처리 마법을 사용할 수 있습니다.

내 솔루션 해킹 솔루션 : '<'를 "{"로, '> "를"} "로 변경합니다. 특정 예제를 포함하여 일반적인 예제 사용 스타일 주석을 다루는 것 같습니다. 불완전하지만 실용적입니다. 가독성 문제 ( '<'사용시 발생하는 IDE 주석 색상 문제)



8

C # XML 주석은 XML로 작성되므로 일반적인 XML 이스케이프를 사용합니다.

예를 들면 ...

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

5

이 문제에 대한 살기 좋은 해결책은 단순히 XML 주석에 이스케이프 문자가있는 읽기 어려운 버전과 기존 //주석을 사용하는 읽을 수있는 버전의 두 가지 예를 포함하는 것 입니다.

간단하지만 효과적인.


0

{...}를 사용하는 것보다 ≤ ... ≥ (보다 작거나 같음 기호, 크거나 같음 기호, 유니 코드의 U2264 및 U2265)를 사용하는 것이 좋습니다. 밑줄이 그어진 꺾쇠 괄호처럼 보이지만 여전히 꺾쇠 괄호입니다! 그리고 코드 파일에 몇 바이트 만 추가합니다.


0

U2280 및 U2281을 사용하는 것이 더 좋습니다. 유니 코드 문자 목록 (수학 연산자 섹션) 에서 복사하여 붙여 넣기 만하면 됩니다.


유니 코드 연산자는 실제 수학적 연산자를 나타내는 데 사용되는 경우 괜찮습니다. 주석 (예 :)에있는 코드 조각에 사용되는 경우에는 좋지 않습니다 List<int>. 예를 들어 코드 스 니펫 복사-붙여 넣기에 대해 생각해보십시오.
Palec

주석에서 이것을 사용하는 방법의 예를 제공 할 수 있습니까? 참으로 결코 사용되는 유니 코드 문자
ClementWalter

1
위에서 설명한대로 문자를 복사하여 붙여 넣습니다.
Paul Coulson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.