C# | Comments and regions
Comments
Section titled “Comments”Using comments in your projects is a handy way of leaving explanations of your design choices, and should aim to make your (or someone else’s) life easier when maintaining or adding to the code.
There are a two ways of adding a comment to your code.
Single line comments
Section titled “Single line comments”Any text placed after // will be treated as a comment.
public class Program{ // This is the entry point of my program. public static void Main() { // Prints a message to the console. - This is a comment! System.Console.WriteLine("Hello, World!");
// System.Console.WriteLine("Hello, World again!"); // You can even comment out code. System.Console.ReadLine(); }}Multi line or delimited comments
Section titled “Multi line or delimited comments”Any text between /* and */ will be treated as a comment.
public class Program{ public static void Main() { /* This is a multi line comment it will be ignored by the compiler. */ System.Console.WriteLine("Hello, World!");
// It's also possible to make an inline comment with /* */ // although it's rarely used in practice System.Console.WriteLine(/* Inline comment */ "Hello, World!");
System.Console.ReadLine(); }}Regions
Section titled “Regions”A region is a collapsible block of code, that can help with the readability and organisation of your code.
NOTE: StyleCop’s rule SA1124 DoNotUseRegions discourages use of regions. They are usually a sign of badly organized code, as C# includes partial classes and other features which make regions obsolete.
You can use regions in the following way:
class Program{ #region Application entry point static void Main(string[] args) { PrintHelloWorld(); System.Console.ReadLine(); } #endregion
#region My method private static void PrintHelloWorld() { System.Console.WriteLine("Hello, World!"); } #endregion}When the above code is view in an IDE, you will be able to collapse and expand the code using the + and - symbols.
Expanded
Collapsed
Documentation comments
Section titled “Documentation comments”XML documentation comments can be used to provide API documentation that can be easily processed by tools:
/// <summary>/// A helper class for validating method arguments./// </summary>public static class Precondition{ /// <summary> /// Throws an <see cref="ArgumentOutOfRangeException"/> with the parameter /// name set to <c>paramName</c> if <c>value</c> does not satisfy the /// <c>predicate</c> specified. /// </summary> /// <typeparam name="T"> /// The type of the argument checked /// </typeparam> /// <param name="value"> /// The argument to be checked /// </param> /// <param name="predicate"> /// The predicate the value is required to satisfy /// </param> /// <param name="paramName"> /// The parameter name to be passed to the /// <see cref="ArgumentOutOfRangeException"/>. /// </param> /// <returns>The value specified</returns> public static T Satisfies<T>(T value, Func<T, bool> predicate, string paramName) { if (!predicate(value)) throw new ArgumentOutOfRangeException(paramName);
return value; }}Documentation is instantly picked up by IntelliSense:


