Skip to content

Contact sales

By filling out this form and clicking submit, you acknowledge our privacy policy.

XML Documentation Comments In C#

Aug 9, 2018 • 5 Minute Read

Introduction

Code documentation describes the intent of a software’s code. This includes the intent or description of a class and its members, the parameters and the expected result, or the return value. There are various syntaxes for comments in C#. One of these is XML Documentation comments, sometimes called XML comments, which starts with a triple slash - ///. XML comments can be utilized by the IntelliSense feature of Visual Studio and VS Code to show information about a type or member; this information comes from what you put in your code documentation. The .NET compiler has an option that reads the XML documentation comments and generate XML documentation from them. This XML documentation can be extracted to a separate XML file. XML documentation comments must immediately precede a user-defined type (such as class, interface, or delegate) or its member (such as field, property, method, or event).

XML Documentation Comments

Let's look at a simple class such as the following:

      class Program
{
 static void Main(string[] args)
 {
   Console.WriteLine("Hello World!");

   Console.ReadKey();
 }

 ///The left side operand for an arithmetic operation
 static int Operand1 { get; set; }

 ///The right side operand for an arithmetic operation
 static int Operand2 { get; set; }

 /// This method adds two integers
 static int Add(int operand1, int operand2)
 {
   return operand1 + operand2;
 }

 ///This method subtracts two integers
 static int Subtract(int operand1, int operand2)
 {
   return operand1 - operand2;
 }
}
    

We added XML comments to properties Operand1 and Operand2, and to methods Add and Subtract. When you call any of these properties or methods with XML comments, they appear with a text description.

There are recommended XML tags you can use with XML comments. There are the <remarks>, <summary>, and <returns> tags.

The Remarks Tag

The <remarks> tag specifies a general commentary or description for a type, such as a class or structure.

      ///<remarks>Holds user basic data like their names and address
class User
{
 string FirstName { get; set; }

 string LastName { get; set; }
}
    

The Summary Tag

The <summary> tag is used to add general commentary explaining a method or other class members. If <remarks> is for a general commentary for a class, <summary> does the same but for the members of the class.

      ///<summary>Subtract two integers and return the result</summary>
static int Subtract(int operand1, int operand2)
{
 return operand1 + operand2;
}
    

The Returns Tag

The <returns> tag documents the return value of a method. So we can update the previous code to add <returns> tag as follows:

      ///<summary>Subtract two integers and returns the result</summary>
///<returns>the difference between the two operands</returns>
static int Subtract(int operand1, int operand2)
{
 return operand1 + operand2;
}
    

End Result

Applying the tags will look like the following:

      ///<remarks>Starts the console application</remarks>
class Program
{
 static void Main(string[] args)
 {
   Console.WriteLine("Hello World!");

   Console.ReadKey();
 }

 ///The left side operand for an arithmetic operation
 static int Operand1 { get; set; }

 ///The right side operand for an arithmetic operation
 static int Operand2 { get; set; }

 ///<summary>Adds two integers and return the result</summary>
 ///<returns>the difference between the two operands</returns>
 static int Add(int operand1, int operand2)
 {
   return operand1 + operand2;
 }

 ///<summary>Subtract two integers and return the result</summary>
 ///<returns>the difference between the two operands</returns>
 static int Subtract(int operand1, int operand2)
 {
   return operand1 - operand2;
 }
}
    

Then we can get IntelliSense when we want to use any of the class members

Wrap Up

XML Documentation comments can be extremely useful in helping you, or other programmers who will use your code, to understand the code better. We looked at three recommended tags with a class containing members that utilised them. You saw how it provides IntelliSense information from these comments.

Use XML documentation as much as possible and give more meaning to your code. See the C# documentation for more recommended tags.

Peter Mbanugo

Peter M.

Peter is a software developer who codes in JavaScript and C#. He has experience working on the Microsoft stack of technologies and also building full-stack applications in JavaScript. He is a co-chair on NodeJS Nigeria, a Twilio Champion, and a contributor to the Hoodie open source project. He is the maker of Hamoni Sync, a real-time state synchronization as a service platform. He is a frequent writer for Code Magazine, Progress/Telerik, and other publications. He enjoys sharing his knowledge of GraphQL, Offline-First, and Architecture, which are the areas he focuses on.

More about this author