Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Руководство_по_C#.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
10.01 Mб
Скачать

3.3Комментарии

Комментарии являются немаловажной частью любого языка программирования, т.к. позволяют удобно пояснять различные участки кода. В C# используются традиционные комментарии в стиле С — однострочные (//...) и многострочные (/* . . . */):

// Это однострочный комментарий

/* Это уже

многострочный комментарий */

Все, что находится в однострочном комментарии — от // до конца строки — игнорируется компилятором, как и весь многострочный комментарий, расположенный между /* и */. Очевидно, что в многострочном комментарии не может присутствовать комбинация */, поскольку она будет трактоваться как конец комментария.

Многострочный комментарий можно помещать в одну строку кода:

Console.WriteLine (/* Здесь идет комментарий! */ "Это скомпилируется");

Встроенные комментарии вроде этого нужно применять осторожно, потому что они могут ухудшить читабельность кода. Однако они удобны при отладке, скажем, когда необходимо временно попробовать запустить программу с указанным другим значением:

DoSomethingMethod (Width, /*Height*/ 100);

Символы комментария, включенные в строковый литерал, конечно же, трактуются как обычные символы:

string s = "/* Это просто нормальная строка */";

Документация XML

В дополнение к комментариям в стиле C, проиллюстрированным выше, в C# имеется очень искусное средство, на которое я хочу обратить особое внимание: способность генерировать документацию в формате XML на основе специальных комментариев. Это однострочные комментарии, начинающиеся с трех слешей (///) вместо двух. В таких комментариях можно размещать XML-дескрипторы, содержащие документацию по типам и членам типов, используемым в коде.

XML-дескрипторы, распознаваемые компилятором, перечислены в следующей таблице:

XML-дескрипторы для комментариев

Дескриптор

Описание

<c>

Помечает текст в строке как код

<code>

Помечает множество строк как код

<example>

Помечает пример кода

<exception>

Документирует класс исключения (синтаксис проверяется компилятором)

<include>

Включает комментарии из другого файла документации (синтаксис проверяется компилятором)

<list>

Вставляет список в документацию

<param>

Помечает параметр метода (синтаксис проверяется компилятором)

<paramref>

Указывает, что слово является параметром метода (синтаксис проверяется компилятором)

<permission>

Документирует доступ к члену (синтаксис проверяется компилятором)

<remarks>

Добавляет описание члена

<returns>

Документирует возвращаемое методом значение

<see>

Представляет перекрестную ссылку на другой параметр (синтаксис проверяется компилятором)

<seealso>

Представляет раздел "see also" ("смотреть также") в описании (синтаксис проверяется компилятором)

<summary>

Представляет краткий итог о типе или члене

<value>

Описывает свойство

Чтобы увидеть, как это работает, рассмотрим пример кода, в который добавим некоторые XML-комментарии:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

/// <summary>

/// Класс Program

/// основной класс программы

/// выводящий текст "Hello, World!"

/// </summary>

class Program

{

/// <summary>

/// Метод Main() является

/// входной точкой работы программы

/// </summary>

/// <param name="args">Аргумент метода Main()</param>

static void Main(string[] args)

{

// Форматируем шапку программы

Console.BackgroundColor = ConsoleColor.Green;

Console.ForegroundColor = ConsoleColor.Black;

Console.WriteLine("********************");

Console.WriteLine("**** Мой проект ****");

Console.WriteLine("********************");

// Основная программа

Console.BackgroundColor = ConsoleColor.Black;

Console.ForegroundColor = ConsoleColor.Green;

Console.WriteLine();

Console.WriteLine("Hello, World!");

// Ожидание нажатия клавиши Enter перед завершением работы

Console.ReadLine();

}

}

}

Компилятор C# может извлекать XML-элементы из специальных комментариев и использовать их для генерации файлов XML. Чтобы заставить компилятор сгенерировать XML-документацию для сборки, указывается опция /doc вместе с именем файла, который должен быть создан:

csc /t:library /doc:MyApplication.xml MyApplication.cs

Данная команда сгенерирует файл XML по имени MyApplication.xml со следующим содержимым:

<?xml version="1.0"?>

<doc>

<assembly>

<name>Program

</assembly>

<members>

<member name="T:ConsoleApplication1.Program">

<summary>

Класс Program

основной класс программы

выводящий текст "Hello, World!"

</summary>

</member>

<member name="M:ConsoleApplication1.Program.Main(System.String[])">

<summary>

Метод Main() является

входной точкой работы программы

</summary>

<param name="args">Аргумент метода Main()</param>

</member>

</members>

</doc>

Обратите внимание на то, что компилятор на самом деле выполнил некоторую работу за вас: он создал элемент <assembly> и также добавил элементы <member> для каждого члена класса в этом файле. Каждый элемент <member> имеет атрибут name с полным именем члена, снабженным префиксом — буквой, который указывает на то, является он типом (Т:), полем (F:) или членом (М:).