Làm cách nào để thoát các ký tự trong các nhận xét c #?


112

Hôm nay tôi nhận ra rằng tôi không biết làm thế nào để thoát các ký tự trong nhận xét cho C #. Tôi muốn ghi lại một lớp C # chung, nhưng tôi không thể viết một ví dụ thích hợp vì tôi không biết cách thoát ký tự <>. Tôi có phải sử dụng &lt;&gt;? Tôi không thích nếu đó là trường hợp vì tôi muốn giúp dễ dàng đọc nhận xét trong tài liệu thực tế, vì vậy tôi không phải tạo một số loại tài liệu mã để có thể đọc mã ví dụ.


1
Bạn có thể cho một bình luận ví dụ?
BoltClock


1
@Mark: Bạn nói đúng, nhưng nó không chỉ có XML ... Tôi đã cố gắng viết một ví dụ cho các generic không phải là XML nhưng nó sử dụng '<' và '>'. Nhưng giải pháp là như nhau cho cả hai.
Tomas Jansson

Với sự phổ biến của các mẫu trong C ++, Java, C # ... thì Microsoft có lý do gì để sử dụng dấu phân cách XML nửa chừng? Sự thiếu rõ ràng và tầm nhìn xa thông thường.
Rick O'Shea

Câu trả lời:


141

Nếu bạn cần phải thoát khỏi nhân vật trong ý kiến XML, bạn cần phải sử dụng các đối tượng nhân vật, vì vậy <sẽ cần phải được thoát như &lt;, như trong câu hỏi của bạn.

Cách thay thế để thoát là sử dụng CDATAcác phần, cho hiệu quả tương tự.

Như bạn đã lưu ý, điều này sẽ tạo ra tài liệu đẹp, nhưng một nhận xét khủng khiếp khi đọc ...


19
Chỉ để tham khảo <sẽ được &lt;>sẽ được &gt;. Ví dụ,List&lt;string&gt; myStringList = new List&lt;string&gt;();
Arvo Bowen

@ArvoBowen Chỉ trong trường hợp ai đó thiếu điều hiển nhiên, lt/ tương gtứng là viết tắt của “nhỏ hơn” / “lớn hơn”.
Lukas Juhrich

1
Điều thú vị là, chỉ <cần để có được thoát với &lt;, >có thể ở lại vì nó là: List&lt;string> myStringList = new List&lt;string>();. Ít nhất điều này hoạt động trong intellisense. Thật kỳ lạ, CDATA không hoạt động trong intellisense. Tôi đã không kiểm tra nó trông như thế nào trong tài liệu được tạo tự động.
Peter Huber

Có thể xác nhận rằng VS 2013 không hiển thị CDATAtrong intellisense. &lt;làm cho nhận xét khó đọc.
Alex

52

Trong các nhận xét C # thuần túy, bạn có thể sử dụng bất kỳ ký tự nào (trừ */khi bạn bắt đầu nhận xét bằng /*hoặc ký tự dòng mới nếu bạn bắt đầu nhận xét bằng //). Nếu bạn đang sử dụng nhận xét XML thì bạn có thể sử dụng phần CDATA để bao gồm các ký tự '<' và '>'.

Xem bài viết blog MSDN này để biết thêm thông tin về các nhận xét XML trong C #.


Ví dụ

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

12
Bạn có thể đúng nếu bạn muốn tạo các tài liệu html đẹp mắt, nhưng tôi thú vị hơn về việc hiểu đúng các mẹo intellisense trong VS, và vì điều đó có vẻ như tôi phải sử dụng cách thoát XML. Nhưng +1 cho lựa chọn thay thế.
Tomas Jansson

2
Rất tiếc, rác máy không đọc được trong các nhận xét của tôi chỉ hữu ích nếu chúng tôi dành thời gian để xây dựng tệp tài liệu của mình khi phần lớn các trường hợp sử dụng là đọc các nhận xét trong nguồn (tốt nhất là một giao diện) .
Rick O'Shea

19

Bạn nói "Tôi muốn làm cho nó dễ dàng để đọc nhận xét trong tài liệu thực tế". Tôi đồng ý.

Các nhà phát triển dành phần lớn cuộc đời của họ trong mã , không xem xét các tài liệu được tạo tự động. Những thứ đó rất tốt cho các thư viện của bên thứ ba như lập biểu đồ, nhưng không tốt cho việc phát triển nội bộ nơi chúng tôi làm việc với tất cả mã. Tôi thực sự bị sốc khi MSFT không đưa ra giải pháp hỗ trợ các nhà phát triển tốt hơn ở đây. Chúng tôi có các vùng mã mở rộng / thu gọn động ... tại sao chúng tôi không thể có nút chuyển đổi hiển thị nhận xét tại chỗ (giữa văn bản thô và nhận xét XML đã xử lý hoặc giữa văn bản thô và nhận xét HTML đã xử lý) ?. Có vẻ như tôi nên có một số khả năng HTML cơ bản trong các nhận xét mở đầu phương thức / lớp của mình (văn bản màu đỏ, chữ in nghiêng, v.v.). Chắc chắn một IDE có thể hoạt động một chút phép thuật xử lý HTML để làm sống động các nhận xét nội tuyến.

Giải pháp hack-of-a-solution của tôi: Tôi thay đổi '<' thành "{" và '> "thành"} ". Điều đó dường như che đậy tôi đối với nhận xét về phong cách sử dụng ví dụ điển hình, bao gồm cả ví dụ cụ thể của bạn. Không hoàn hảo, nhưng thực dụng đưa ra vấn đề về khả năng đọc (và vấn đề với màu nhận xét IDE xảy ra khi sử dụng '<')


5
"Hack của một giải pháp" của bạn có vẻ đúng hơn bạn nghĩ. Theo đó , trình biên dịch nhận dạng dấu ngoặc nhọn như dấu ngoặc nhọn và liên kết chúng một cách chính xác .
RubberDuck

8

Nhận xét XML của C # được viết bằng XML, vì vậy bạn sẽ sử dụng cách thoát XML bình thường.

Ví dụ...

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

5

Tôi đã tìm thấy một giải pháp khả thi cho vấn đề này chỉ đơn giản là bao gồm hai ví dụ: một phiên bản khó đọc trong các ký tự w / Escape chú thích XML và một phiên bản khác có thể đọc được bằng cách sử dụng các //chú thích thông thường .

Đơn giản mà hiệu quả.


0

Tốt hơn là sử dụng {...} là sử dụng ≤ ... ≥ (dấu nhỏ hơn hoặc bằng, dấu lớn hơn hoặc bằng, U2264 và U2265 trong Unicode). Trông giống như dấu ngoặc nhọn được gạch dưới nhưng vẫn chắc chắn là dấu ngoặc nhọn! Và chỉ thêm một vài byte vào tệp mã của bạn.


0

Tốt hơn hãy thử U2280 và U2281 - chỉ cần sao chép và dán từ Danh sách các ký tự Unicode (phần toán tử toán học).


Các toán tử Unicode là OK khi chúng được sử dụng để biểu thị các toán tử toán học thực tế, kém nếu chúng được sử dụng trong các đoạn mã tình cờ nằm ​​trong một chú thích (ví dụ List<int>). Hãy suy nghĩ về việc sao chép-dán đoạn mã.
Palec

bạn có thể cung cấp một ví dụ về cách sử dụng điều này trong một bình luận? không bao giờ được sử dụng ký tự unicode thực
ClementWalter

1
Sao chép và dán ký tự như mô tả ở trên.
Paul Coulson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.