if (p1.GetType() == p2.GetType()) {
return (p1.X == p2.X) && (p1.Y == p2.Y);
}
return false;
}
/// <summary>Этот оператор определяет, находятся ли два объекта Point в одном
/// месте.</summary>
/// <param><c>p1</c> — это первый сравниваемый объект Point.</param>
/// <param><c>p2</c> это второй сравниваемый объект Point.</param>
/// <returns>True, если у объектов Point одинаковое расположение и
/// одинаковый тип; иначе False.</returns>
/// <seealso cref="Equals"/>
/// <seealso cref="operator=="/>
public static bool operator!=(Point p1, Point p2) {
return!(p1 == p2);
}
/// <summary>Это точка входа тестирующей класс Point
/// программы.
/// <para>Эта программа тестирует каждый метод и оператор и
/// предназначена для выполнения после каждого нетривиального изменения,
/// выполненного в классе Point.</para></summary>
public static void Main () {
// место для кода теста
}
}
}
A.4.2 Результирующий XML
Здесь представлен результат, созданный генератором документации по вышеприведенному исходному коду для класса Point:
<?xml version="1.0"?>
<doc>
<assembly>
<name>Point</name>
</assembly>
<members>
<member name="T:Graphics.Point">
<summary>Класс <c>Point</c> моделирует точку в двумерной
плоскости.
</summary>
</member>
<member name="F:Graphics.Point.x">
<summary>Переменная экземпляра <c>x</c> представляет
координату x точки.</summary>
</member>
<member name="F:Graphics.Point.y">
<summary>Переменная экземпляра <c>y</c> представляет
координату y точки.</summary>
</member>
<member name="M:Graphics.Point.#ctor">
<summary>Этот конструктор инициализирует новый Point значениями
(0,0).</summary>
</member>
<member name="M:Graphics.Point.#ctor(System.Int32,System.Int32)">
<summary>Этот конструктор инициализирует новый Point параметрами
(<paramref name="xor"/>,<paramref name="yor"/>).</summary>
<param><c>xor</c> — это координата x нового Point.</param>
<param><c>yor</c> — это координата y нового Point.</param>
</member>
<member name="M:Graphics.Point.Move(System.Int32,System.Int32)">
<summary>Этот метод устанавливает для точки
заданные координаты.</summary>
<param><c>xor</c> — это новая координата x.</param>
<param><c>yor</c> — это новая координата y.</param>
<see cref="M:Graphics.Point.Translate(System.Int32,System.Int32)"/>
</member>
<member
name="M:Graphics.Point.Translate(System.Int32,System.Int32)">
<summary>Этот метод изменяет положение точки
на заданное смещение x и y.
<example>Например:
<code>
Point p = new Point(3,5);
p.Translate(-1,3);
</code>
дает в результате <c>p</c> со значением (2,8).
</example>
</summary>
<param><c>xor</c> — это относительное смещение x.</param>
<param><c>yor</c> — это относительное смещение y.</param>
<see cref="M:Graphics.Point.Move(System.Int32,System.Int32)"/>
</member>
<member name="M:Graphics.Point.Equals(System.Object)">
<summary>Этот метод определяет, находятся ли два объекта Point в одном
месте.</summary>
<param><c>o</c> — это объект, который требуется сравнить с текущим
объектом.
</param>
<returns>True, если у объектов Point одинаковое расположение и
одинаковый тип; иначе 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>Сообщить положение точки в виде строки.</summary>
<returns>Строка, представляющая положение точки в виде
(x,y),
без пустого пространства в начале, конце или внутри.</returns>
</member>
<member
name="M:Graphics.Point.op_Equality(Graphics.Point,Graphics.Point)">
<summary>Этот оператор определяет, находятся ли два объекта Point в
одном
расположении.</summary>
<param><c>p1</c> — это первый сравниваемый объект Point.</param>
<param><c>p2</c> — это второй сравниваемый объект Point.</param>
<returns>True, если у объектов Point одинаковое расположение и
одинаковый тип; иначе 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>Этот оператор определяет, находятся ли два объекта Point в
одном
расположении.</summary>
<param><c>p1</c> — это первый сравниваемый объект Point.</param>
<param><c>p2</c> — это второй сравниваемый объект Point.</param>
<returns>True, если у объектов Point одинаковое расположение и
одинаковый тип; иначе 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>Это точка входа программы тестирования класса Point.
<para>Эта программа тестирует каждый метод и оператор, и
ее предполагается выполнять после каждого нетривиального
обслуживания класса Point.</para></summary>
</member>
<member name="P:Graphics.Point.X">
<value>Свойство <c>X</c> представляет
координату x точки.</value>
</member>
<member name="P:Graphics.Point.Y">
<value>Свойство <c>Y</c> представляет
координату y точки.</value>
</member>
</members>
</doc>
B. Грамматика
Это приложение содержит сводные сведения о лексике и синтаксисе, используемых в основном документе, а также о грамматических расширениях для небезопасного кода. Грамматические конструкции отображаются здесь в том же порядке, в котором они представлены в основном документе.
B.1 Лексика
ввод:
раздел_вводанеобязательно
раздел_ввода:
часть_раздела_ввода
раздел_ввода часть_раздела_ввода
часть_раздела_ввода:
элементы_вводанеобязательно новая_строка
директива_предварительной_обработки
элементы_ввода:
элемент_ввода
элементы_ввода элемент_ввода
элемент_ввода:
пробел
примечание
маркер
B.1.1 Знаки завершения строки
новая_строка:
Символ возврата каретки (U+000D)
Символ перевода строки (U+000A)
Символ возврата каретки (U+000D), за которым следует знак перевода строки (U+000A)
Символ следующей строки (U+0085)
Символ разделителя строк (U+2028)
Символ разделителя абзацев (U+2029)
B.1.2 Комментарии
комментарий:
однострочный_комментарий
комментарий_с_разделами
однострочный_комментарий:
// входные_символынеобязательно
входные_символы:
входной_символ
входные_символы входной_символ
входной_символ:
Любой знак Юникода за исключением символа_следующей_строки
символ_следующей_строки:
Символ возврата каретки (U+000D)
Символ перевода строки (U+000A)
Символ следующей строки (U+0085)
Символ разделителя строк (U+2028)
Символ разделителя абзацев (U+2029)
комментарий_с_разделами:
/* текст_комментария_с_разделаминеобязательно звездочка /
текст_комментария_с_разделами:
раздел_комментария_с_разделами
текст_комментария_с_разделами раздел_комментария_с_разделами
раздел_комментария_с_разделами:
/
звездочканеобязательно не_косая_черта_и_не_звездочка
звездочка:
*
звездочка *
не_косая_черта_и_не_звездочка:
Любой знак Юникода за исключением косой черты (/) или звездочки (*)
B.1.3 Пробел
пробел:
Любой символа класса Юникода Zs
Символ горизонтальной табуляции (U+0009)
Символ вертикальной табуляции (U+000B)
Символ перехода к другой форме (U+000C)
B.1.4 Маркеры
маркер:
идентификатор
ключевое_слово
целочисленный_литерал
действительный_литерал
символьный_литерал
строковый_литерал
оператор_или_знак_пунктуации