2010-01-28 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / web / monodoc-xml
blobe8a5ffe2c71dd4cc5754bafadf0d492f1c74344f
1 * MonoDoc XML Tag Reference
3 ** Introduction
5 <em>
6 [This documentation is in progress.  Comments to
7 <a href="mailto:jbarn@httcb.net">jbarn@httcb.net</a> and/or
8 <a href="mailto:mono-docs-list@ximian.com">mono-docs-list@ximian.com</a>.]
9 </em>
11 MonoDoc XML, our format for multilingual API documentation stored outside of
12 source files, is very similar to the output of Microsoft's csc /doc.  Minor
13 alterations have been made to ease human parsing and hand-editing, but
14 the majority of the tags are identical.  In fact, many of the descriptions
15 and examples below are taken from the ECMA C# Language Specification with
16 little or no alteration.
18 This document provides a list of all available MonoDoc XML tags, with
19 syntax and examples.  A complete example can be found in
20 <a href="#appendix-a">Appendix A</a>, and both a <a href="#">DTD</a> and
21 <a href="#">XSD schema</a> will be available very shortly.
23 ** MonoDoc XML Tags
25 <dl>
26 <dt><code><a href="#c">&lt;c&gt;</a></code></dt>
27 <dd>Mark short sections of text as code.</dd>
29 <dt><code><code><a href="#code">&lt;code&gt;</a></code></dt></code>
30 <dd>Mark one or more lines as code or output.</dd>
32 <dt><code><a href="#doc">&lt;doc&gt;</a></dt></code>
33 <dd>Root element of documentation XML.</dd>
35 <dt><code><a href="#event">&lt;event&gt;</a></dt></code>
36 <dd>Describe an event.</dd>
38 <dt><code><a href="#example">&lt;example&gt;</a></dt></code>
39 <dd>An example.</dd>
41 <dt><code><a href="#exception">&lt;exception&gt;</a></dt></code>
42 <dd>Specify an exception a method can throw.</dd>
44 <dt><code><a href="#field">&lt;field&gt;</a></dt></code>
45 <dd>Describe a field.</dd>
47 <dt><code><a href="#list">&lt;list&gt;</a></dt></code>
48 <dd>Create a list or table.</dd>
50 <dt><code><a href="#method">&lt;method&gt;</a></dt></code>
51 <dd>Describe a method.</dd>
53 <dt><code><a href="#para">&lt;para&gt;</a></dt></code>
54 <dd>Allow text to be structured in paragraphs.</dd>
56 <dt><code><a href="#param">&lt;param&gt;</a></dt></code>
57 <dd>Specify a parameter for a method.</dd>
59 <dt><code><a href="#paramref">&lt;paramref&gt;</a></dt></code>
60 <dd>Mark a word as a parameter.</dd>
62 <dt><code><a href="#permission">&lt;permission&gt;</a></dt></code>              
63 <dd>Define the access level of a member.</dd>
65 <dt><code><a href="#property">&lt;property&gt;</a></dt></code>
66 <dd>Describe a property.</dd>
68 <dt><code><a href="#remarks">&lt;remarks&gt;</a></dt></code>
69 <dd>Provide verbose information for a type or member.</dd>
71 <dt><code><a href="#returns">&lt;returns&gt;</a></dt></code>
72 <dd>Specify the return value of a method.</dd>
74 <dt><code><a href="#see">&lt;see&gt;</a></dt></code>
75 <dd>Specify a link.</dd>
77 <dt><code><a href="#seealso">&lt;seealso&gt;</a></dt></code>
78 <dd>Specify a 'see also' entry.</dd>
80 <dt><code><a href="#summary">&lt;summary&gt;</a></dt></code>
81 <dd>Provide a brief (usually one sentence) description of a member or type.</dd>
83 <dt><code><a href="#type">&lt;type&gt;</a></dt></code>
84 <dd>Describe a type.</dd>
85 </dl>
87 ** Definitions and Examples
89 *** <a name="c">&lt;c&gt;</a>
91 This tag can be used to mark short, inline fragments of text that should 
92 be considered source code or program output.  User agents should render 
93 this tag in a special -- likely monospace -- font.  For larger sections, 
94 use <a href="#code"><code>&lt;code&gt;</code></a>.
96 **** Syntax
98 <pre>
99 &lt;c&gt;code or output text&lt;/c&gt;
100 </pre>
102 **** Example
104 <pre>   
105 &lt;remarks&gt;
106     Class &lt;c&gt;Point&lt;/c&gt; models a point in two-dimensional space.
107 &lt;/remarks&gt;
108 </pre>
110 *** <a name="code">&lt;code&gt;</a>
112 This tag can be used to mark one or more lines of text as source code or 
113 program output.  User agents should render this tag in a special (likely 
114 monospace) font, and preserve both whitespace and newlines.
116 **** Syntax
118         <code>&lt;code&gt;source or program output&lt;/code&gt;</code>
120 **** Example
122 <pre>
123 &lt;summary&gt;
124     This method changes the point's location by the given
125     x- and y-offsets.
126     &lt;example lang="C#"&gt;
127         A C# example:
128         &lt;code&gt;
129             Point p = new Point(3, 5);
130             p.Translate(-1, 3);
131             // p == (2, 8);
132         &lt;/code&gt;
133     &lt;/example&gt;
134 &lt;/summary&gt;
135 </pre>
137 *** <a name="doc">&lt;doc&gt;</a>
139 This tag is the root element of the documentation file.  It can contain 
140 any number of &lt;type&gt; elements.
142 **** Syntax
144 <code>&lt;doc lang="language" assembly="assembly"&gt;typedocs&lt;/doc&gt;</code>
146 <blockquote>
147 <em>lang="language"</em><br />
148 The two-letter ISO code that specifies what language the contained
149 documentation is written in.
150 </blockquote>
152 **** Example
154 <pre>
155 &lt;doc lang="en"&gt;
156     &lt;type name="Graphics.Point"&gt;
157         &lt;!-- ... --&gt;
158     &lt;/type&gt;
159 &lt;/doc&gt; 
160 </pre>
162 *** <a name="event">&lt;event&gt;</a>
164 This tag documents an event.
166 **** Syntax
168 <code>&lt;event name="eventname"&gt;documentation&lt;/event&gt;</code>
170 <blockquote>
171 <em>name="eventname"</em><br />
172 The name of the event being documented.
173 </blockquote>
174                 
175 **** Example
177 <pre>
178 &lt;event name="Click"&gt;
179     &lt;summary&gt;
180         Occurs when the control is clicked.
181     &lt;/summary&gt;
182     &lt;data&gt;
183         The event handler receives an argument of type EventArgs
184         containing data related to this event.
185     &lt;/data&gt;
186     &lt;remarks&gt;
187         &lt;para&gt;The ControlStyles.StandardClick style must be set 
188         for this event to be raised.&lt;/para&gt;
189         &lt;para&gt;For more information about handling events, see 
190         Consuming Events.&lt;/para&gt;
191     &lt;/remarks&gt;
192 &lt;/event&gt;
193 </pre>
195 *** <a name="example">&lt;example&gt;</a>
197 This tag marks a section of text as an example, and optionally specifies 
198 what programming language <code><a href="#code">&lt;code&gt;</a></code> portions of the example are written in.
200 **** Syntax
202 <code><example lang="language">example text and code</example></code>
204 <blockquote>
205 <em>lang="language"</em><br />
206 (optional) The name of the programming language <code><a href="#code">&lt;code&gt;</a></code> blocks in this example
207 use.  This information can be used by user agents to provide
208 intelligent access to examples in multiple languages.
209 </blockquote>
211 **** Example
213 See <code><a href="#code">&lt;code&gt;<a/></code> for an example.
215 *** <a name="exception">&lt;exception&gt;</a>
217 This tag provides a way to specify the exceptions a method can throw.
219 **** Syntax
221 <code>&lt;exception cref="exception-type"&gt;description&lt;/exception&gt;</code>
223 <blockquote>
224 <em>cref="exception-type"</em><br />
225 The name of an exception type.
226 </blockquote>
228 **** Example
230 <pre>
231 &lt;exception cref="System.IO.FileNotFoundException"&gt;
232     Thrown when the requested file is not found.
233 &lt;/exception&gt;
234 </pre>
236 *** <a name="field">&lt;field&gt;</a>
238 This tag is used to describe a field.
240 **** Syntax
242 <code>&lt;field name="fieldname"&gt;documentation&lt;/field&gt;</code>
244 <blockquote>
245 <em>name="fieldname"</em><br />
246 The name of the field being documented.
247 </blockquote>
248         
249 **** Example
251 <pre>
252 &lt;field name="x"&gt;
253     &lt;summary&gt;
254         Instance variable &lt;c&gt;x&lt;/c&gt; represents the point's 
255         x-coordinate.
256     &lt;/summary&gt;
257 &lt;/field&gt;
258 </pre>
260 *** <a name="list">&lt;list&gt;</a>
262 This tag is used to create a list or table of items.  It may contain a 
263 <code>&lt;listheader&gt;</code> block to define the heading row of either a table or 
264 definition list.  (When defining a table, only an entry for 'term' in the 
265 heading need be supplied.)
267 Each item in the list is specified with an <code>&lt;item&gt;</code> block.  When creating a 
268 definition list, both <code>&lt;term&gt;</code> and <code>&ltdescription&gt;</code> must be specified.  
269 However, for a table, bulleted list, or numbered list, only <code>&lt;description&gt;</code>
270 need be specified.
272 **** Syntax
274 <pre>
275 &lt;list type="bullet" | "number" | "table"&gt;
276    &lt;listheader&gt;
277        &lt;term&gt;term&lt;/term&gt;
278        &lt;description&gt;description&lt;/description&gt;
279    &lt;/listheader&gt;
280    &lt;item&gt;
281        &lt;term&gt;term&lt;/term&gt;
282        &lt;description&gt;description&lt;/description&gt;
283    &lt;/item&gt;
284    
285    ...
286   
287 &lt;/list&gt;
288 </pre>
289         
290 <blockquote>
291 <em>term</em><br />
292 The term to define, whose definition is in <code>&lt;description&gt;</code>.
293 <br /><br />    
294 <em>description</em><br />
295 Either an item in a bullet or numbered list, or the definition of a <code>&lt;term&gt;</code>.
296 </blockquote>
298 **** Example
300 <pre>
301 &lt;list type="bullet"&gt;
302     &lt;item&gt;
303         &lt;description&gt;Item 1&lt;/description&gt;
304     &lt;/item&gt;
305     &lt;item&gt;
306         &lt;description&gt;Item 2&lt;/description&gt;
307     &lt;/item&gt;
308 &lt;/list&gt;
309 </pre>
311 *** <a name="method">&lt;method&gt;</a>
313 This tag is the overall containing tag for documenting a method.
315 **** Syntax
317 <code>&lt;method name="methodname"&gt;documentation&lt;/method&gt;</code>
319 **** Example
321 <pre>
322 &lt;method name="op_Equality(Graphics.Point,Graphics.Point)"&gt;
323     &lt;summary&gt;
324         This operator determines whether two points have
325         the same location.
326     &lt;/summary&gt;
327     &lt;param name="p1"&gt;
328         &lt;c&gt;p1&lt;/c&gt; is the first Point to be compared.
329     &lt;/param&gt;
330     &lt;param name="p2"&gt;
331         &lt;c&gt;p2&lt;/c&gt; is the second Point to be compared.
332     &lt;/param&gt;
333     &lt;returns&gt;
334         True if the points have the same location and they
335         have the exact same type; otherwise, false.
336     &lt;/returns&gt;
337     &lt;seealso cref="Equals(System.Object)" /&gt;
338     &lt;seealso cref="op_Inequality(Graphics.Point,Graphics.Point)" /&gt;
339 &lt;/method&gt;
340 </pre>
342 *** <a name="para">&lt;para&gt;</a>
345 This tag is for use inside other tags such as <code>&lt;remarks&gt;</code> or <code>&lt;returns&gt;</code>, and 
346 allows text to be structured into paragraphs.
348 **** Syntax
350 <code>&lt;para&gt;text&lt;/para&gt;</code>
352 **** Example
354 <pre>
355 &lt;summary&gt;
356     &lt;para&gt;
357     This is the entry point of the &lt;c&gt;Point&lt;/c&gt; class testing 
358     program.
359     &lt;/para&gt;
360     &lt;para&gt;
361     This program tests each method and operator, and
362     is intended to be run after any non-trivial maintenance has
363     been performed on the &lt;c&gt;Point&lt;/c&gt; class.
364     &lt;/para&gt;
365 &lt;/summary&gt;
366 </pre>
368 *** <a name="param">&lt;param&gt;</a>
370 This tag is used to describe a parameter for a method, constructor, or 
371 indexer.
373 **** Syntax
375 <code>&lt;param name="name"&gt;description&lt;/param&gt;</code>
376         
377 <blockquote>
378 <em>name</em><br />
379 The name of the parameter.
380 </blockquote>
382 **** Example
384 <pre>
385 &lt;summary&gt;
386     This is the entry point of the &lt;c&gt;Point&lt;/c&gt; 
387     class.
388 &lt;/summary&gt;
389 &lt;param name="xor"&gt;&lt;c&gt;xor&lt;/c&gt; is the new x-coordinate.&lt;/param&gt;
390 &lt;param name "yor"&gt;&lt;c&gt;yor&lt;/c&gt; is the new y-coordinate.&lt;/param&gt;
391 </pre>
393 *** <a name="paramref">&lt;paramref&gt;</a>
395 This tag is used to indicate that a word is a parameter.  User agents 
396 could use this information for special formatting or hyperlink insertion.
398 **** Syntax
400 <code>&lt;paramref name="name" /&gt;</code>
402 <blockquote>
403 <em>name</em><br />
404 The name of the parameter.
405 </blockquote>
407 **** Example
409 <pre>
410 &lt;summary&gt;
411     This constructor initializes the new Point to
412     (&lt;paramref name="xor" /&gt;,&lt;paramref name="yor" /&gt;).
413 &lt;/summary&gt;
414 &lt;param name="xor"&gt;&lt;c&gt;xor&lt;/c&gt; is the new x-coordinate.&lt;/param&gt;
415 &lt;param name "yor"&gt;&lt;c&gt;yor&lt;/c&gt; is the new y-coordinate.&lt;/param&gt;
416 </pre>
418 *** <a name="permission">&lt;permission&gt;</a>
420 This tag allows the security accessibility of a member to be documented.
422 **** Syntax
424 <code>&lt;permission cref="member"&gt;description&lt;/permission&gt;</code>
426 <blockquote>
427 <em>cref="member"</em><br />
428 The name of a member.</br>
429 </blockquote>
431 **** Example
433 <pre>
434 &lt;permission cref="System.Security.PermissionSet"&gt;
435     Everyone can access this method.
436 &lt;/permission&gt;
437 </pre>        
439 *** <a name="property">&ltproperty&gt;</a>
441 This tag is the overall containing tag for documenting a property.
443 **** Syntax
445 <code>&lt;property name="propertyname"&gt;documentation&lt;/property&gt;</code>
447 <blockquote>
448 <em>name="propertyname"</em><br />
449 The name of the property.
450 </blockquote>
452 **** Example
454 <pre>
455 &lt;property name="X"&gt;
456     &lt;summary&gt;
457         Gets or sets the point's x-coordinate.
458     &lt;value&gt;
459         The point's x-coordinate.
460     &lt;/value&gt;
461 &lt;/property&gt;
462 </pre>
465 *** <a name="remarks">&lt;remarks&gt;</a>
467 This tag contains extended discussion and information about a member or
468 a type. <em>[jbarn: This differs from both the ECMA docs and 
469 portions of Microsoft's documentation, but seems consistent with both 
470 common usage, and, more importantly, NDoc convention.]</em>
472 **** Syntax
474 <code>&lt;remarks&gt;description&lt;/remarks&gt;</code>
475         
476 **** Example
478 <pre>
479 &lt;type name="Graphics.Point"&gt;
480     &lt;summary&gt;
481         Models a point in a two-dimensional plane.
482     &lt;/summary&gt;
483     &lt;remarks&gt;
484         Herein I might have an extended discussion of
485         the validity of Cartesian coordinate systems,
486         with examples pro and con, and perhaps
487         some code.
488     &lt;/remarks&gt;
489     
490     &lt;!-- ... --&gt;
491 &lt;/type&gt;
492 </pre>
494 *** <a name="returns">&lt;returns&gt;</a>
496 This tag is used to describe the return value of a method.
498 **** Syntax
500 <code>&lt;returns&gt;description&lt;/returns&gt;</code>
502 **** Example
504 <pre>
505 &lt;method name="op_Inequality(Graphics.Point,Graphics.Point)"&gt;
506     &lt;summary&gt;
507         This operator determines whether two points have the
508         same location.
509     &lt;/summary&gt;
510     &lt;param name="p1"&gt;&lt;c&gt;p1&lt;/c&gt; is the first Point to be compared.&lt;/param&gt;
511     &lt;param name="p2"&gt;&lt;c&gt;p2&lt;/c&gt; is the second Point to be compared.&lt;/param&gt;
512     &lt;returns&gt;
513         True if the points do not have the same location and they
514         have the exact same type; otherwise, false.
515     &lt;/returns&gt;
516 &lt;/method&gt;
517 </pre>
519 *** <a name="see">&lt;see&gt;</a>
521 This tag allows a link to be specified within documentation text.  (Use 
522 <code>&lt;seealso&gt;</code> to indicate links that should appear in a 'See Also' section.)
524 **** Syntax
526 <code>&lt;see cref="destination" /&gt;</code>
528 <blockquote>
529 <em>cref="destination"</em><br />
530 A destination, such as a type or a member of a type.
531 </blockquote>
533 **** Example
535 <pre>
536 &lt;summary&gt;
537     This method changes the point's location to the given
538     coordinates.  This is an asinine way to insert a link,
539     but &lt;see cref="Equals(Object)" /&gt; to understand
540     how points are compared.
541 &lt;/summary&gt;
542 </pre>  
544 *** <a name="seealso">&lt;seealso&gt;</a>
546 This tag allows an entry to be generated for the 'See Also' section.  (Use 
547 <code>&lt;see&gt;</code> to specify a link from within text.)
549 **** Syntax
551 <code>&lt;seealso cref="destination" /&gt;</code>
552         
553 <blockquote>
554 <em>cref="destination"</em><br />
555 A destination, such as a type or a member of a type.
556 </blockquote>
558 **** Example
560 <pre>
561 &lt;summary&gt;
562     This method determines whether two Points have the
563     same location.
564 &lt;/summary&gt;
565 &lt;seealso cref="op_Equality(Graphics.Point,Graphics.Point)" /&gt;
566 &lt;seealso cref="op_Inequality(Graphics.Point,Graphics.Point" /&gt;
567 </pre>
569 *** <a name="summary">&lt;summary&gt;</a>
571 This tag contains a short summary of a member or type, 
572 often one sentence. <em>[jbarn: This differs from both the ECMA docs and 
573 portions of Microsoft's documentation, but seems consistent with both 
574 common usage, and, more importantly, NDoc convention.]</em>
576 **** Syntax
578 <code>&lt;summary&gt;description&lt;/summary&gt;</code>
580 **** Example
582 <pre>
583 &lt;summary&gt;
584     This is the entry point of the &lt;c&gt;Point&lt;/c&gt; class testing
585     program.
586 &lt;/summary&gt;
587 &lt;remarks&gt;
588     This program tests each method an operator, and is intended
589     to be run after any non-trivial maintenance is performed
590     on the &lt;c&gt;Point&lt;/c&gt; class.
591 &lt;/remarks&gt;
592 </pre>
594 *** <a name="type">&lt;type&gt;</a>
596 This tag is the overall containing tag for documenting a type.
598 **** Syntax
600 <code>&lttype name="typename" assembly="assemblyname"&gt;documentation&lt;/type&gt;</code>
602 <blockquote>
603 <em>name="typename"</em><br />
604 The name of the type being documented.
605 <br /><br />
606 <em>assembly="assemblyname"</em><br />
607 The assembly this type resides in.  This attribute is not required for nested types.
608 </blockquote>
610 **** Example
612 <pre>
613 &lt;type name="Graphics.Point" assembly="Point"&gt;
614     &lt;summary&gt;
615         Models a point in two-dimensional space.
616     &lt;/summary&gt;
617     
618     &lt;!-- members --&gt;
619     
620     &lt;field name="x"&gt;
621         &lt;summary&gt;
622             Represents the point's x-coordinate.
623         &lt;/summary&gt;
624     &lt;/field&gt;
625 &lt;/type&gt;
626 </pre>
628 ** <a name="appendix-a">Appendix A: Complete Example</a>
630 <em>[jbarn: Please, please, don't take the human-readable portions of
631 this example to be good guidelines for writing your own documentation.
632 this XML is intended only to show structure.]</em>
634 <pre>
635 &lt;?xml version="1.0" encoding="UTF-8"?&gt;
636 &lt;doc lang="en"&gt;
637     &lt;type name="Graphics.Point" assembly="Point"&gt;
638         &lt;summary&gt;
639             Models a point in a two-dimensional plane.
640         &lt;/summary&gt;
641         &lt;remarks&gt;
642             No useful remarks.
643         &lt;/remarks&gt;
644         
645         &lt;!-- fields --&gt;
646         &lt;field name="x"&gt;
647             &lt;summary&gt;
648                 Instance variable &lt;c&gt;x&lt;/c&gt; represents the point's x-coordinate.
649             &lt;/summary&gt;
650         &lt;/field&gt;
651         
652         &lt;field name="y"&gt;
653             &lt;summary&gt;
654                 Instance variable &lt;c&gt;y&lt;/c&gt; represents the point's y-coordinate.
655             &lt;/summary&gt;
656         &lt;/field&gt;
657         
658         &lt;!-- methods --&gt;
659         &lt;method name="#ctor"&gt;
660             &lt;summary&gt;
661                 Initializes the new point to &lt;c&gt;(0,0)&lt;/c&gt;.
662             &lt;/summary&gt;
663         &lt;/method&gt;
664         
665         &lt;method name="#ctor(System.Int32,System.Int32)"&gt;
666             &lt;summary&gt;
667                 Initializes the new Point to (&lt;paramref name="xor" /&gt;,&lt;paramref name="yor" /&gt;).
668             &lt;/summary&gt;
669             &lt;param name="xor"&gt;&lt;c&gt;xor&lt;/c&gt; is the new x-coordinate.&lt;/param&gt;
670             &lt;param name="yor"&gt;&lt;c&gt;yor&lt;/c&gt; is the new y-coordinate.&lt;/param&gt;
671         &lt;/method&gt;
672         
673         &lt;method name="Move(System.Int32,System.Int32)"&gt;
674             &lt;summary&gt;
675                 This method changes the point's location to the given coordinates.
676             &lt;/summary&gt;
677             &lt;param name="xor"&gt;&lt;c&gt;xor&lt;/c&gt; is the new x-coordinate.&lt;/param&gt;
678             &lt;param name="yor"&gt;&lt;c&gt;yor&lt;/c&gt; is the new y-coordinate.&lt;/param&gt;
679             &lt;seealso cref="Translate(System.Int32,System.Int32)" /&gt;
680         &lt;/method&gt;
681         
682         &lt;method name="Translate(System.Int32,System.Int32)"&gt;
683             &lt;summary&gt;This method changes the point's location by the given x- and y-offsets.&lt;/summary&gt;
684             &lt;remarks&gt;
685                 &lt;example lang="C#"&gt;
686                     A C# example:
687                         &lt;code&gt;
688                             Point p = new Point(3, 5);
689                             p.Translate(-1, 3);
690                         &lt;/code&gt;
691                     This code results in &lt;c&gt;p&lt;/c&gt; having the value (2,8).
692                 &lt;/example&gt;
693             &lt;/remarks&gt;
694             &lt;param name="xor"&gt;&lt;c&gt;xor&lt;/c&gt; is the relative x-offset.&lt;/param&gt;
695             &lt;param name="yor"&gt;&lt;c&gt;yor&lt;/c&gt; is the relative y-offset.&lt;/param&gt;
696             &lt;seealso cref="Move(System.Int32,System.Int32)" /&gt;
697         &lt;/method&gt;
698         
699         &lt;method name="Equals(System.Object)"&gt;
700             &lt;summary&gt;This method determines whether two points have the same location.&lt;/summary&gt;
701             &lt;param name="o"&gt;&lt;c&gt;o&lt;/c&gt; is the object to be compared to the current object.&lt;/param&gt;
702             &lt;returns&gt;True if the Points have the same location and they have the exact same
703             type; otherwise, false.&lt;/returns&gt;
704             &lt;seealso cref="op_Equality(Graphics.Point,Graphics.Point)" /&gt;
705             &lt;seealso cref="op_Inequality(Graphics.Point,Graphics.Point" /&gt;
706         &lt;/method&gt;
707         
708         &lt;method name="ToString"&gt;
709             &lt;summary&gt;Report a point's location as a string.&lt;/summary&gt;
710             &lt;returns&gt;A string representing a point's location, in the form (x,y), without any
711             leading, trailing, or embedded whitespace.&lt;/returns&gt;
712         &lt;/method&gt;
713         
714         &lt;method name="op_Equality(Graphics.Point,Graphics.Point)"&gt;
715             &lt;summary&gt;This operator determines whether two points have the same location.&lt;/summary&gt;
716             &lt;param name="p1"&gt;&lt;c&gt;p1&lt;/c&gt; is the first Point to be compared.&lt;/param&gt;
717             &lt;param name="p2"&gt;&lt;c&gt;p2&lt;/c&gt; is the second Point to be compared.&lt;/param&gt;
718             &lt;returns&gt;True if the points have the same location and they have the exact same
719             type; otherwise, false.&lt;/returns&gt;
720             &lt;seealso cref="Equals(System.Object)" /&gt;
721             &lt;seealso cref="op_Inequality(Graphics.Point,Graphics.Point)" /&gt;
722         &lt;/method&gt;
724         &lt;method name="op_Inequality(Graphics.Point,Graphics.Point)"&gt;
725             &lt;summary&gt;This operator determines whether two points have the same location.&lt;/summary&gt;
726             &lt;param name="p1"&gt;&lt;c&gt;p1&lt;/c&gt; is the first Point to be compared.&lt;/param&gt;
727             &lt;param name="p2"&gt;&lt;c&gt;p2&lt;/c&gt; is the second Point to be compared.&lt;/param&gt;
728             &lt;returns&gt;True if the points do not have the same location and they have the exact same
729             type; otherwise, false.&lt;/returns&gt;
730             &lt;seealso cref="Equals(System.Object)" /&gt;
731             &lt;seealso cref="op_Equality(Graphics.Point,Graphics.Point)" /&gt;
732         &lt;/method&gt;
733         
734         &lt;method name="Main"&gt;
735             &lt;summary&gt;
736                 This is the entry point of the Point class testing program.
737             &lt;/summary&gt;
738             &lt;remarks&gt;
739                 &lt;para&gt;This program tests each method and operator, and is intended to be run after
740                 any non-trivial maintenance has been performed on the Point class.&lt;/para&gt;
741             &lt;/remarks&gt;
742         &lt;/method&gt;
743         
744         &lt;!-- properties --&gt;
745         &lt;property name="X"&gt;
746             &lt;value&gt;Property &lt;c&gt;X&lt;/c&gt; represents the point's x-coordinate.&lt;/value&gt;
747         &lt;/property&gt;
748         
749         &lt;property name="Y"&gt;
750             &lt;value&gt;Property &lt;c&gt;y&lt;/c&gt; represents the point's y-coordinate.&lt;/value&gt;
751         &lt;/property&gt;
752     &lt;/type&gt;
753 &lt;/doc&gt;
754 </pre>