ドキュメント コメントDocumentation Comments

ドキュメントコメントは、ソース内の特別に書式設定されたコメントです。このコメントを分析して、アタッチされているコードに関するドキュメントを生成できます。Documentation comments are specially formatted comments in the source that can be analyzed to produce documentation about the code they are attached to. ドキュメントコメントの基本的な形式は XML です。The basic format for documentation comments is XML. ドキュメントコメントを含むコードをコンパイルすると、コンパイラは必要に応じて、ソース内のドキュメントコメントの合計を表す XML ファイルを生成することができます。When the compiling code with documentation comments, the compiler may optionally emit an XML file that represents the sum total of the documentation comments in the source. その後、この XML ファイルを他のツールで使用して、印刷ドキュメントやオンラインドキュメントを作成できます。This XML file can then be used by other tools to produce printed or online documentation.

この章では、ドキュメントコメントと共に使用するドキュメントコメントと推奨される XML タグについて説明します。This chapter describes document comments and recommended XML tags to use with document comments.

ドキュメント コメント形式Documentation Comment Format

ドキュメントコメントは ''' 、3つの単一引用符で始まる特殊なコメントです。Document comments are special comments that begin with ''', three single quote marks. これらは、ドキュメント化する型 (クラス、デリゲート、インターフェイスなど) または型のメンバー (フィールド、イベント、プロパティ、メソッドなど) の直前に配置する必要があります。They must immediately precede the type (such as a class, delegate, or interface) or type member (such as a field, event, property, or method) that they document. 部分メソッドの宣言に関するドキュメントコメントは、その本体を提供するメソッドのドキュメントコメントに置き換えられます (存在する場合)。A document comment on a partial method declaration will be replaced by the document comment on the method that supplies its body, if there is one. 隣接するドキュメントコメントはすべて、1つのドキュメントコメントを生成するために一緒に追加されます。All adjacent document comments are appended together to produce a single document comment. 文字の後に空白文字がある場合 ''' 、その空白文字は連結に含まれません。If there is a whitespace character following the ''' characters, then that whitespace character is not included in the concatenation. 次に例を示します。For example:

''' <remarks>
''' Class <c>Point</c> models a point in a two-dimensional plane.
''' </remarks>
Public Class Point 
   ''' <remarks>
   ''' Method <c>Draw</c> renders the point.
   ''' </remarks>
   Sub Draw()
   End Sub
End Class

ドキュメントコメントは、に従って整形式の XML である必要があり https://www.w3.org/TR/REC-xml ます。Documentation comments must be well formed XML according to https://www.w3.org/TR/REC-xml. XML が整形式でない場合は、警告が生成され、ドキュメントファイルにはエラーが発生したことを示すコメントが含まれます。If the XML is not well formed, a warning is generated and the documentation file will contain a comment saying that an error was encountered.

開発者は独自のタグセットを自由に作成できますが、推奨されるセットは次のセクションで定義されています。Although developers are free to create their own set of tags, a recommended set is defined in the next section. 推奨されるタグの一部には特別な意味があります。Some of the recommended tags have special meanings:

  • <param> タグは、パラメーターの記述に使用します。The <param> tag is used to describe parameters. タグによって指定されたパラメーターが <param> 存在し、型のメンバーのすべてのパラメーターがドキュメントコメントに記述されている必要があります。The parameter specified by a <param> tag must exist and all parameters of the type member must be described in the documentation comment. どちらかの条件が true でない場合、コンパイラは警告を発行します。If either condition is not true, the compiler issues a warning.

  • cref 属性は任意のタグにアタッチでき、コード要素への参照を提供します。The cref attribute can be attached to any tag to provide a reference to a code element. コード要素が存在している必要があります。コンパイル時に、コンパイラは名前をメンバーを表す ID 文字列に置き換えます。The code element must exist; at compile-time the compiler replaces the name with the ID string representing the member. コード要素が存在しない場合は、コンパイラによって警告が発行されます。If the code element does not exist, the compiler issues a warning. 属性で記述されている名前を検索する場合、 cref コンパイラは、 Imports 含んでいるソースファイル内に出現するステートメントを尊重します。When looking for a name described in a cref attribute, the compiler respects Imports statements that appear within the containing source file.

  • タグは、 <summary> ドキュメントビューアーが型またはメンバーに関する追加情報を表示するために使用することを目的としています。The <summary> tag is intended to be used by a documentation viewer to display additional information about a type or member.

ドキュメントファイルでは、型とメンバーに関する完全な情報は提供されません。ドキュメントのコメントに含まれるもののみが含まれます。Note that the documentation file does not provide full information about a type and members, only what is contained in the document comments. 型またはメンバーに関する詳細情報を取得するには、ドキュメントファイルを実際の型またはメンバーのリフレクションと組み合わせて使用する必要があります。To get more information about a type or member, the documentation file must be used in conjunction with reflection on the actual type or member.

ドキュメントジェネレーターは、XML の規則に従って有効なすべてのタグを受け入れて処理する必要があります。The documentation generator must accept and process any tag that is valid according to the rules of XML. 次のタグによって、ユーザー ドキュメントで一般的に使用される機能が与えられます。The following tags provide commonly used functionality in user documentation:

<c> コードに似たフォントでテキストを設定します<c> Sets text in a code-like font

<code> コードに似たフォントで、1行以上のソースコードまたはプログラム出力を設定します。<code> Sets one or more lines of source code or program output in a code-like font

<example> 例を示します。<example> Indicates an example

<exception> メソッドがスローできる例外を識別します。<exception> Identifies the exceptions a method can throw

<include> 外部 XML ドキュメントを含みます。<include> Includes an external XML document

<list> リストまたはテーブルを作成します。<list> Creates a list or table

<para> テキストへの構造の追加を許可します<para> Permits structure to be added to text

<param> メソッドまたはコンストラクターのパラメーターを記述します。<param> Describes a parameter for a method or constructor

<paramref> 単語がパラメーター名であることを識別します<paramref> Identifies that a word is a parameter name

<permission> メンバーのセキュリティアクセシビリティを文書にする<permission> Documents the security accessibility of a member

<remarks> 型について説明します。<remarks> Describes a type

<returns> メソッドの戻り値について説明します。<returns> Describes the return value of a method

<see> リンクを指定します<see> Specifies a link

<seealso> 関連項目を生成します<seealso> Generates a See Also entry

<summary> 型のメンバーを記述します。<summary> Describes a member of a type

<typeparam> 型パラメーターについて説明します。<typeparam> Describes a type parameter

<value> プロパティについて説明します。<value> Describes a property

<c><c>

このタグは、記述内のテキストのフラグメントが、コードのブロックに使用されるようなフォントを使用する必要があることを指定します。This tag specifies that a fragment of text within a description should use a font like that used for a block of code. (実際のコードの行の場合は、を使用 <code> します)。(For lines of actual code, use <code>.)

構文 :Syntax:

<c>text to be set like code</c>

例:Example:

''' <remarks>
''' Class <c>Point</c> models a point in a two-dimensional plane.
''' </remarks>
Public Class Point 
End Class

<code><code>

このタグは、ソースコードまたはプログラムの出力の1つ以上の行で固定幅のフォントを使用することを指定します。This tag specifies that one or more lines of source code or program output should use a fixed-width font. (小さなコードフラグメントの場合は、を使用 <c> します)。(For small code fragments, use <c>.)

構文 :Syntax:

<code>source code or program output</code>

例:Example:

''' <summary>
''' This method changes the point's location by the given x- and 
''' y-offsets.
''' <example>
''' For example:
''' <code>
'''    Dim p As Point = New Point(3,5)
'''    p.Translate(-1,3)
''' </code>
''' results in <c>p</c>'s having the value (2,8).
''' </example>
''' </summary>
Public Sub Translate(x As Integer, y As Integer)
    Me.x += x
    Me.y += y
End Sub

<example><example>

このタグでは、コメント内のコード例を使用して、要素の使用方法を示すことができます。This tag allows example code within a comment to show how an element can be used. 通常、これにはタグも使用され <code> ます。Ordinarily, this will involve use of the tag <code> as well.

構文 :Syntax:

<example>description</example>

例:Example:

例については、「<code>」を参照してください。See <code> for an example.

<exception><exception>

このタグは、メソッドがスローできる例外を文書化する方法を提供します。This tag provides a way to document the exceptions a method can throw.

構文 :Syntax:

<exception cref="member">description</exception>

例:Example:

Public Module DataBaseOperations
    ''' <exception cref="MasterFileFormatCorruptException"></exception>
    ''' <exception cref="MasterFileLockedOpenException"></exception>
    Public Sub ReadRecord(flag As Integer)
        If Flag = 1 Then
            Throw New MasterFileFormatCorruptException()
        ElseIf Flag = 2 Then
            Throw New MasterFileLockedOpenException()
        End If
        ' ...
    End Sub
End Module

<include><include>

このタグは、外部整形式の XML ドキュメントの情報を含めるために使用されます。This tag is used to include information from an external well-formed XML document. XML ドキュメントに XPath 式を適用して、ドキュメントに含める XML を指定します。An XPath expression is applied to the XML document to specify what XML should be included from the document. タグは、 <include> 外部ドキュメントから選択された XML に置き換えられます。The <include> tag is then replaced with the selected XML from the external document.

構文 :Syntax:

<include file="filename" path="xpath">

例:Example:

ソースコードに次のような宣言が含まれている場合は、次のようになります。If the source code contained a declaration like the following:

''' <include file="docs.xml" path="extra/class[@name="IntList"]/*" />

また、外部ファイル docs.xml には次の内容が含まれていました。and the external file docs.xml had the following contents

<?xml version="1.0"?>
<extra>
    <class name="IntList">
        <summary>
            Contains a list of integers.
        </summary>
    </class>
    <class name="StringList">
        <summary>
            Contains a list of strings.
        </summary>
    </class>
</extra>

次に、同じドキュメントが、ソースコードに含まれているものとして出力されます。then the same documentation is output as if the source code contained:

''' <summary>
''' Contains a list of integers.
''' </summary>

<list><list>

このタグは、項目のリストまたはテーブルを作成するために使用されます。This tag is used to create a list or table of items. <listheader>テーブルまたは定義リストの見出し行を定義するブロックが含まれている場合があります。It may contain a <listheader> block to define the heading row of either a table or definition list. (テーブルを定義する場合は、見出しに含まれる用語のエントリだけを指定する必要があります)。(When defining a table, only an entry for term in the heading need be supplied.)

リストの各項目は、<item> ブロックで指定されます。Each item in the list is specified with an <item> block. 定義リストを作成する場合は、用語と説明の両方を指定する必要があります。When creating a definition list, both term and description must be specified. ただし、テーブル、箇条書きリスト、番号付きリストの場合は、説明のみを指定する必要があります。However, for a table, bulleted list, or numbered list, only description need be specified.

構文 :Syntax:

<list type="bullet" | "number" | "table">
    <listheader>
        <term>term</term>
        <description>description</description>
    </listheader>
    <item>
        <term>term</term>
        <description>description</description>
    </item>
    ...
    <item>
        <term>term</term>
        <description>description</description>
    </item>
</list>

例:Example:

Public Class TestClass
    ''' <remarks>
    ''' Here is an example of a bulleted list:
    ''' <list type="bullet">
    '''     <item>
    '''        <description>Item 1.</description>
    '''     </item>
    '''     <item>
    '''         <description>Item 2.</description>
    '''     </item>
    ''' </list>
    ''' </remarks>
    Public Shared Sub Main()
    End Sub
End Class

<para><para>

このタグは、やなどの他のタグ内で使用するためのものであり、 <remarks> <returns> テキストに構造を追加することを許可します。This tag is for use inside other tags, such as <remarks> or <returns>, and permits structure to be added to text.

構文 :Syntax:

<para>content</para>

例:Example:

''' <summary>
''' This is the entry point of the Point class testing program.
''' <para>This program tests each method and operator, and
''' is intended to be run after any non-trvial maintenance has
''' been performed on the Point class.</para>
''' </summary>
Public Shared Sub Main()
End Sub

<param><param>

このタグは、メソッド、コンストラクター、またはインデックス付きプロパティのパラメーターを記述します。This tag describes a parameter for a method, constructor, or indexed property.

構文 :Syntax:

<param name="name">description</param>

例:Example:

''' <summary>
''' This method changes the point's location to the given
''' coordinates.
''' </summary>
''' <param name="x"><c>x</c> is the new x-coordinate.</param>
''' <param name="y"><c>y</c> is the new y-coordinate.</param>
Public Sub Move(x As Integer, y As Integer)
    Me.x = x
    Me.y = y
End Sub

<paramref><paramref>

このタグは、単語がパラメーターであることを示します。This tag indicates that a word is a parameter. ドキュメントファイルを処理して、このパラメーターを別の方法で書式設定することができます。The documentation file can be processed to format this parameter in some distinct way.

構文 :Syntax:

<paramref name="name"/>

例:Example:

''' <summary>
''' This constructor initializes the new Point to
''' (<paramref name="x"/>,<paramref name="y"/>).
''' </summary>
''' <param name="x"><c>x</c> is the new Point's x-coordinate.</param>
''' <param name="y"><c>y</c> is the new Point's y-coordinate.</param>
Public Sub New(x As Integer, y As Integer)
    Me.x = x
    Me.y = y
End Sub

<permission><permission>

このタグは、メンバーのセキュリティアクセシビリティを文書にします。This tag documents the security accessibility of a member

構文 :Syntax:

<permission cref="member">description</permission>

例:Example:

''' <permission cref="System.Security.PermissionSet">Everyone can
''' access this method.</permission>
Public Shared Sub Test()
End Sub

<remarks><remarks>

このタグは、型に関する概要情報を指定します。This tag specifies overview information about a type. (を使用し <summary> て、型のメンバーを記述します)。(Use <summary> to describe the members of a type.)

構文 :Syntax:

<remarks>description</remarks>

例:Example:

''' <remarks>
''' Class <c>Point</c> models a point in a two-dimensional plane.
''' </remarks>
Public Class Point 
End Class

<returns><returns>

このタグは、メソッドの戻り値を表します。This tag describes the return value of a method.

構文 :Syntax:

<returns>description</returns>

例:Example:

''' <summary>
''' Report a point's location as a string.
''' </summary>
''' <returns>
''' A string representing a point's location, in the form (x,y), without
''' any leading, training, or embedded whitespace.
''' </returns>
Public Overrides Function ToString() As String
    Return "(" & x & "," & y & ")"
End Sub

<see><see>

このタグを使用すると、テキスト内でリンクを指定できます。This tag allows a link to be specified within text. ( <seealso> 「関連項目」セクションに表示されるテキストを示すために使用します)。(Use <seealso> to indicate text that is to appear in a See Also section.)

構文 :Syntax:

<see cref="member"/>

例:Example:

''' <summary>
''' This method changes the point's location to the given
''' coordinates.
''' </summary>
''' <see cref="Translate"/>
Public Sub Move(x As Integer, y As Integer)
    Me.x = x
    Me.y = y
End Sub

''' <summary>
''' This method changes the point's location by the given x- and
''' y-offsets.
''' </summary>
''' <see cref="Move"/>
Public Sub Translate(x As Integer, y As Integer)
    Me.x += x
    Me.y += y
End Sub

<seealso><seealso>

このタグは、「関連項目」セクションのエントリを生成します。This tag generates an entry for the See Also section. (を使用して <see> 、テキスト内からリンクを指定します。)(Use <see> to specify a link from within text.)

構文 :Syntax:

<seealso cref="member"/>

例:Example:

''' <summary>
''' This method determines whether two Points have the same location.
''' </summary>
''' <seealso cref="operator=="/>
''' <seealso cref="operator!="/>
Public Overrides Function Equals(o As Object) As Boolean
    ' ...
End Function

<summary><summary>

このタグは、型のメンバーを表します。This tag describes a type member. ( <remarks> 型自体を記述するには、を使用します)。(Use <remarks> to describe a type itself.)

構文 :Syntax:

<summary>description</summary>

例:Example:

''' <summary>
''' This constructor initializes the new Point to (0,0).
''' </summary>
Public Sub New()
    Me.New(0,0)
End Sub

<typeparam><typeparam>

このタグは、型パラメーターを記述します。This tag describes a type parameter.

構文 :Syntax:

<typeparam name="name">description</typeparam>

例:Example:

''' <typeparam name="T">
''' The base item type. Must implement IComparable.
''' </typeparam>
Public Class ItemManager(Of T As IComparable)
End Class

<value><value>

このタグは、プロパティを表します。This tag describes a property.

構文 :Syntax:

<value>property description</value>

例:Example:

''' <value>
''' Property <c>X</c> represents the point's x-coordinate.
''' </value>
Public Property X() As Integer
    Get
        Return _x
    End Get
    Set (Value As Integer)
        _x = Value
    End Set
End Property

ID 文字列ID Strings

ドキュメントファイルを生成すると、コンパイラはソースコード内の各要素に対して、一意に識別するドキュメントコメントでタグ付けされた ID 文字列を生成します。When generating the documentation file, the compiler generates an ID string for each element in the source code that is tagged with a documentation comment that uniquely identifies it. この ID 文字列は、ドキュメントコメントに対応するコンパイル済みアセンブリ内の要素を識別するために、外部ツールによって使用されます。This ID string can be used by external tools to identify which element in a compiled assembly corresponds to the document comment.

ID 文字列は次のように生成されます。ID strings are generated as follows:

文字列に空白は配置されません。No white space is placed in the string.

文字列の最初の部分では、ドキュメント化されているメンバーの種類を、1つの文字の後にコロンを使用して識別します。The first part of the string identifies the kind of member being documented, via a single character followed by a colon. 次の種類のメンバーが定義されています。これは、イベント (E)、フィールド (F)、コンストラクターと演算子 (M)、名前空間 (N)、プロパティ (P)、型 (T) を含むメソッドです。The following kinds of members are defined, with the corresponding character in parenthesis after it: events (E), fields (F), methods including constructors and operators (M), namespaces (N), properties (P) and types (T). 感嘆符 (!) は、ID 文字列の生成中にエラーが発生したことを示し、残りの文字列はエラーに関する情報を提供します。An exclamation point (!) indicates an error occurred while generating the ID string, and the rest of the string provides information about the error.

文字列の2番目の部分は、グローバル名前空間を開始位置として、要素の完全修飾名です。The second part of the string is the fully qualified name of the element, starting at the global namespace. 要素の名前、それを囲む型、および名前空間は、ピリオドで区切られます。The name of the element, its enclosing type(s), and namespace are separated by periods. アイテムの名前にピリオドが含まれている場合、それらはシャープ記号 (#) で置き換えられます。If the name of the item itself has periods, they are replaced by the pound sign (#). (この文字が名前に含まれている要素がないことを前提としています)。型パラメーターを持つ型の名前は、バッククォート (') の後に、その型の型パラメーターの数を表す数値で終わります。(It is assumed that no element has this character in its name.) The name of a type with type parameters ends with a backquote (`) followed by a number that represents the number of type parameters on the type. 入れ子になった型は、それを含む型の型パラメーターにアクセスできるので、入れ子にされた型はその型の型パラメーターを暗黙的に含んでいるため、この場合は型パラメーターの合計でこれらの型がカウントされることに注意してください。It is important to remember that because nested types have access to the type parameters of the types containing them, nested types implicitly contain the type parameters of their containing types, and those types are counted in their type parameter totals in this case.

引数を持つメソッドとプロパティについては、かっこで囲まれた引数リストが続きます。For methods and properties with arguments, the argument list follows, enclosed in parentheses. 引数を指定しない場合、かっこは省略されます。For those without arguments, the parentheses are omitted. 引数はコンマで区切られます。The arguments are separated by commas. 各引数のエンコーディングは、次のように CLI シグネチャと同じです。引数は完全修飾名で表されます。The encoding of each argument is the same as a CLI signature, as follows: Arguments are represented by their fully qualified name. たとえば、はになり、はになり、はになり Integer System.Int32 String System.String Object System.Object ます。For example, Integer becomes System.Int32, String becomes System.String, Object becomes System.Object, and so on. 修飾子が指定された引数 ByRef は、型名の後に ' @ ' があります。Arguments having the ByRef modifier have a '@' following their type name. ByVal、、または修飾子を持つ引数に Optional ParamArray 特別な表記はありません。Arguments having the ByVal, Optional or ParamArray modifier have no special notation. 配列である引数は、 [lowerbound:size, ..., lowerbound:size] コンマの数がランク1で、各次元の下限とサイズ (既知の場合) が10進数で表されます。Arguments that are arrays are represented as [lowerbound:size, ..., lowerbound:size] where the number of commas is the rank - 1, and the lower bounds and size of each dimension, if known, are represented in decimal. 下限またはサイズが指定されていない場合は省略されます。If a lower bound or size is not specified, it is omitted. 特定の次元で下限およびサイズが省略されている場合は、':' も省略されます。If the lower bound and size for a particular dimension are omitted, the ':' is omitted as well. 配列の配列は、レベルごとに1つの "" で表され [] ます。Arrays of arrays are represented by one "[]" per level.

ID 文字列の例ID string examples

次の例では、各ソース要素から生成された、ドキュメントコメントを持つことができる ID 文字列と共に、VB コードのフラグメントを示しています。The following examples each show a fragment of VB code, along with the ID string produced from each source element capable of having a documentation comment:

型は、完全修飾名を使用して表されます。Types are represented using their fully qualified name.

Enum Color
    Red
    Blue
    Green
End Enum

Namespace Acme
    Interface IProcess
    End Interface

    Structure ValueType
        ...
    End Structure

    Class Widget
        Public Class NestedClass
        End Class

        Public Interface IMenuItem
        End Interface

        Public Delegate Sub Del(i As Integer)

        Public Enum Direction
            North
            South
            East
            West
        End Enum
    End Class
End Namespace

"T:Color"
"T:Acme.IProcess"
"T:Acme.ValueType"
"T:Acme.Widget"
"T:Acme.Widget.NestedClass"
"T:Acme.Widget.IMenuItem"
"T:Acme.Widget.Del"
"T:Acme.Widget.Direction"

フィールドは、完全修飾名で表されます。Fields are represented by their fully qualified name.

Namespace Acme
    Structure ValueType
        Private total As Integer
    End Structure

    Class Widget
        Public Class NestedClass
            Private value As Integer
        End Class

        Private message As String
        Private Shared defaultColor As Color
        Private Const PI As Double = 3.14159
        Protected ReadOnly monthlyAverage As Double
        Private array1() As Long
        Private array2(,) As Widget
    End Class
End Namespace

"F:Acme.ValueType.total"
"F:Acme.Widget.NestedClass.value"
"F:Acme.Widget.message"
"F:Acme.Widget.defaultColor"
"F:Acme.Widget.PI"
"F:Acme.Widget.monthlyAverage"
"F:Acme.Widget.array1"
"F:Acme.Widget.array2"

コンストラクター。Constructors.

Namespace Acme
    Class Widget
        Shared Sub New()
        End Sub

        Public Sub New()
        End Sub

        Public Sub New(s As String)
        End Sub
    End Class
End Namespace

"M:Acme.Widget.#cctor"
"M:Acme.Widget.#ctor"
"M:Acme.Widget.#ctor(System.String)"

メソッド.Methods.

Namespace Acme
    Structure ValueType
        Public Sub M(i As Integer)
        End Sub
    End Structure

    Class Widget
        Public Class NestedClass
            Public Sub M(i As Integer)
            End Sub
        End Class

        Public Shared Sub M0()
        End Sub

        Public Sub M1(c As Char, ByRef f As Float, _
            ByRef v As ValueType)
        End Sub

        Public Sub M2(x1() As Short, x2(,) As Integer, _
            x3()() As Long)
        End Sub

        Public Sub M3(x3()() As Long, x4()(,,) As Widget)
        End Sub

        Public Sub M4(Optional i As Integer = 1)

        Public Sub M5(ParamArray args() As Object)
        End Sub
    End Class
End Namespace

"M:Acme.ValueType.M(System.Int32)"
"M:Acme.Widget.NestedClass.M(System.Int32)"
"M:Acme.Widget.M0"
"M:Acme.Widget.M1(System.Char,System.Single@,Acme.ValueType@)"
"M:Acme.Widget.M2(System.Int16[],System.Int32[0:,0:],System.Int64[][])"
"M:Acme.Widget.M3(System.Int64[][],Acme.Widget[0:,0:,0:][])"
"M:Acme.Widget.M4(System.Int32)"
"M:Acme.Widget.M5(System.Object[])"

プロパティ。Properties.

Namespace Acme
    Class Widget
        Public Property Width() As Integer
            Get
            End Get
            Set (Value As Integer)
            End Set
        End Property

        Public Default Property Item(i As Integer) As Integer
            Get
            End Get
            Set (Value As Integer)
            End Set
        End Property

        Public Default Property Item(s As String, _
            i As Integer) As Integer
            Get
            End Get
            Set (Value As Integer)
            End Set
        End Property
    End Class
End Namespace

"P:Acme.Widget.Width"
"P:Acme.Widget.Item(System.Int32)"
"P:Acme.Widget.Item(System.String,System.Int32)"

イベントEvents

Namespace Acme
    Class Widget
        Public Event AnEvent As EventHandler
        Public Event AnotherEvent()
    End Class
End Namespace

"E:Acme.Widget.AnEvent"
"E:Acme.Widget.AnotherEvent"

演算子。Operators.

Namespace Acme
    Class Widget
        Public Shared Operator +(x As Widget) As Widget
        End Operator

        Public Shared Operator +(x1 As Widget, x2 As Widget) As Widget
        End Operator
    End Class
End Namespace

"M:Acme.Widget.op_UnaryPlus(Acme.Widget)"
"M:Acme.Widget.op_Addition(Acme.Widget,Acme.Widget)"

変換演算子には、末尾に ~ 戻り値の型が続きます。Conversion operators have a trailing ~ followed by the return type.

Namespace Acme
    Class Widget
        Public Shared Narrowing Operator CType(x As Widget) As _
            Integer
        End Operator

        Public Shared Widening Operator CType(x As Widget) As Long
        End Operator
    End Class
End Namespace

"M:Acme.Widget.op_Explicit(Acme.Widget)~System.Int32"
"M:Acme.Widget.op_Implicit(Acme.Widget)~System.Int64"

ドキュメント コメントの例Documentation comments example

次の例は、クラスのソースコードを示してい Point ます。The following example shows the source code of a Point class:

Namespace Graphics
    ''' <remarks>
    ''' Class <c>Point</c> models a point in a two-dimensional
    ''' plane.
    ''' </remarks>
    Public Class Point
        ''' <summary>
        ''' Instance variable <c>x</c> represents the point's x-coordinate.
        ''' </summary>
        Private _x As Integer

        ''' <summary>
        ''' Instance variable <c>y</c> represents the point's y-coordinate.
        ''' </summary>
        Private _y As Integer

        ''' <value>
        ''' Property <c>X</c> represents the point's x-coordinate.
        ''' </value>
        Public Property X() As Integer
            Get
                Return _x
            End Get
            Set(Value As Integer)
                _x = Value
            End Set
        End Property

        ''' <value>
        ''' Property <c>Y</c> represents the point's y-coordinate.
        ''' </value>
        Public Property Y() As Integer
            Get
                Return _y
            End Get
            Set(Value As Integer)
                _y = Value
            End Set
        End Property

        ''' <summary>
        ''' This constructor initializes the new Point to (0,0).
        ''' </summary>
        Public Sub New()
            Me.New(0, 0)
        End Sub

        ''' <summary>
        ''' This constructor initializes the new Point to
        ''' (<paramref name="x"/>,<paramref name="y"/>).
        ''' </summary>
        ''' <param name="x"><c>x</c> is the new Point's
        ''' x-coordinate.</param>
        ''' <param name="y"><c>y</c> is the new Point's
        ''' y-coordinate.</param>
        Public Sub New(x As Integer, y As Integer)
            Me.X = x
            Me.Y = y
        End Sub

        ''' <summary>
        ''' This method changes the point's location to the given
        ''' coordinates.
        ''' </summary>
        ''' <param name="x"><c>x</c> is the new x-coordinate.</param>
        ''' <param name="y"><c>y</c> is the new y-coordinate.</param>
        ''' <see cref="Translate"/>
        Public Sub Move(x As Integer, y As Integer)
            Me.X = x
            Me.Y = y
        End Sub

        ''' <summary>
        ''' This method changes the point's location by the given x- and
        ''' y-offsets.
        ''' <example>
        ''' For example:
        ''' <code>
        '''    Dim p As Point = New Point(3, 5)
        '''    p.Translate(-1, 3)
        ''' </code>
        ''' results in <c>p</c>'s having the value (2,8).
        ''' </example>
        ''' </summary>
        ''' <param name="x"><c>x</c> is the relative x-offset.</param>
        ''' <param name="y"><c>y</c> is the relative y-offset.</param>
        ''' <see cref="Move"/>
        Public Sub Translate(x As Integer, y As Integer)
            Me.X += x
            Me.Y += y
        End Sub

        ''' <summary>
        ''' This method determines whether two Points have the same
        ''' location.
        ''' </summary>
        ''' <param name="o"><c>o</c> is the object to be compared to the
        ''' current object.</param>
        ''' <returns>
        ''' True if the Points have the same location and they have the
        ''' exact same type; otherwise, false.
        ''' </returns>
        ''' <seealso cref="Operator op_Equality"/>
        ''' <seealso cref="Operator op_Inequality"/>
        Public Overrides Function Equals(o As Object) As Boolean
            If o Is Nothing Then
                Return False
            End If
            If o Is Me Then
                Return True
            End If
            If Me.GetType() Is o.GetType() Then
                Dim p As Point = CType(o, Point)
                Return (X = p.X) AndAlso (Y = p.Y)
            End If
            Return False
        End Function

        ''' <summary>
        ''' Report a point's location as a string.
        ''' </summary>
        ''' <returns>
        ''' A string representing a point's location, in the form
        ''' (x,y), without any leading, training, or embedded whitespace.
        ''' </returns>
        Public Overrides Function ToString() As String
            Return "(" & X & "," & Y & ")"
        End Function

        ''' <summary>
        ''' This operator determines whether two Points have the
        ''' same location.
        ''' </summary>
        ''' <param name="p1"><c>p1</c> is the first Point to be compared.
        ''' </param>
        ''' <param name="p2"><c>p2</c> is the second Point to be compared.
        ''' </param>
        ''' <returns>
        ''' True if the Points have the same location and they 
        ''' have the exact same type; otherwise, false.
        ''' </returns>
        ''' <seealso cref="Equals"/>
        ''' <seealso cref="op_Inequality"/>
        Public Shared Operator =(p1 As Point, p2 As Point) As Boolean
            If p1 Is Nothing OrElse p2 Is Nothing Then
                Return False
            End If
            If p1.GetType() Is p2.GetType() Then
                Return (p1.X = p2.X) AndAlso (p1.Y = p2.Y)
            End If
            Return False
        End Operator

        ''' <summary>
        ''' This operator determines whether two Points have the
        ''' same location.
        ''' </summary>
        ''' <param name="p1"><c>p1</c> is the first Point to be comapred.
        ''' </param>
        ''' <param name="p2"><c>p2</c> is the second Point to be compared.
        ''' </param>
        ''' <returns>
        ''' True if the Points do not have the same location and
        ''' the exact same type; otherwise, false.
        ''' </returns>
        ''' <seealso cref="Equals"/>
        ''' <seealso cref="op_Equality"/>
        Public Shared Operator <>(p1 As Point, p2 As Point) As Boolean
            Return Not p1 = p2
        End Operator

        ''' <summary>
        ''' This is the entry point of the Point class testing program.
        ''' <para>This program tests each method and operator, and
        ''' is intended to be run after any non-trvial maintenance has
        ''' been performed on the Point class.</para>
        ''' </summary>
        Public Shared Sub Main()
            ' class test code goes here
        End Sub
    End Class
End Namespace

クラスのソースコードが指定されたときに生成される出力を次に Point 示します。Here is the output produced when given the source code for class Point, shown above:

<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Point</name>
    </assembly>
    <members>
        <member name="T:Graphics.Point">
            <remarks>Class <c>Point</c> models a point in a
            two-dimensional plane. </remarks>
        </member>
        <member name="F:Graphics.Point.x">
            <summary>Instance variable <c>x</c> represents the point's
            x-coordinate.</summary>
        </member>
        <member name="F:Graphics.Point.y">
            <summary>Instance variable <c>y</c> represents the point's
            y-coordinate.</summary>
        </member>
        <member name="M:Graphics.Point.#ctor">
            <summary>This constructor initializes the new Point to
            (0,0).</summary>
        </member>
        <member name="M:Graphics.Point.#ctor(System.Int32,System.Int32)">
            <summary>This constructor initializes the new Point to
            (<paramref name="x"/>,<paramref name="y"/>).</summary>
            <param><c>x</c> is the new Point's x-coordinate.</param>
            <param><c>y</c> is the new Point's y-coordinate.</param>
        </member>
        <member name="M:Graphics.Point.Move(System.Int32,System.Int32)">
            <summary>This method changes the point's location to
            the given coordinates.</summary>
            <param><c>x</c> is the new x-coordinate.</param>
            <param><c>y</c> is the new y-coordinate.</param>
            <see cref=
            "M:Graphics.Point.Translate(System.Int32,System.Int32)"/>
        </member>
        <member name=
        "M:Graphics.Point.Translate(System.Int32,System.Int32)">
            <summary>This method changes the point's location by the given
            x- and y-offsets.
            <example>For example:
            <code>
            Point p = new Point(3,5);
            p.Translate(-1,3);
            </code>
            results in <c>p</c>'s having the value (2,8).
            </example>
            </summary>
            <param><c>x</c> is the relative x-offset.</param>
            <param><c>y</c> is the relative y-offset.</param>
            <see cref="M:Graphics.Point.Move(System.Int32,System.Int32)"/>
        </member>
        <member name="M:Graphics.Point.Equals(System.Object)">
            <summary>This method determines whether two Points have the
            same location.</summary>
            <param><c>o</c> is the object to be compared to the current
            object.</param>
            <returns>True if the Points have the same location and they
            have the exact same type; otherwise, false.</returns>
            <seealso cref=
            "M:Graphics.Point.op_Equality(Graphics.Point,Graphics.Point)"
            />
            <seealso cref=
           "M:Graphics.Point.op_Inequality(Graphics.Point,Graphics.Point)"
            />
        </member>
        <member name="M:Graphics.Point.ToString">
            <summary>Report a point's location as a string.</summary>
            <returns>A string representing a point's location, in the form
            (x,y), without any leading, training, or embedded
            whitespace.</returns>
        </member>
        <member name=
        "M:Graphics.Point.op_Equality(Graphics.Point,Graphics.Point)">
            <summary>This operator determines whether two Points have the
            same location.</summary>
            <param><c>p1</c> is the first Point to be compared.</param>
            <param><c>p2</c> is the second Point to be compared.</param>
            <returns>True if the Points have the same location and they
            have the exact same type; otherwise, false.</returns>
            <seealso cref="M:Graphics.Point.Equals(System.Object)"/>
            <seealso cref=
           "M:Graphics.Point.op_Inequality(Graphics.Point,Graphics.Point)"
            />
        </member>
        <member name=
        "M:Graphics.Point.op_Inequality(Graphics.Point,Graphics.Point)">
            <summary>This operator determines whether two Points have the
            same location.</summary>
            <param><c>p1</c> is the first Point to be compared.</param>
            <param><c>p2</c> is the second Point to be compared.</param>
            <returns>True if the Points do not have the same location and
            the exact same type; otherwise, false.</returns>
            <seealso cref="M:Graphics.Point.Equals(System.Object)"/>
            <seealso cref=
            "M:Graphics.Point.op_Equality(Graphics.Point,Graphics.Point)"
            />
        </member>
        <member name="M:Graphics.Point.Main">
            <summary>This is the entry point of the Point class testing
            program.
            <para>This program tests each method and operator, and
            is intended to be run after any non-trvial maintenance has
            been performed on the Point class.</para>
            </summary>
        </member>
        <member name="P:Graphics.Point.X">
            <value>Property <c>X</c> represents the point's
            x-coordinate.</value>
        </member>
        <member name="P:Graphics.Point.Y">
            <value>Property <c>Y</c> represents the point's
            y-coordinate.</value>
        </member>
    </members>
</doc>