Примечания, использование и печать инструкций

Замечание

Группы интересов сообщества теперь переехали из Yammer в Microsoft Viva Engage. Чтобы присоединиться к сообществу Viva Engage и принять участие в последних обсуждениях, заполните форму Request access to Finance and Operations Viva Engage Community и выберите сообщество, к которому вы хотите присоединиться.

В этой статье описываются инструкции в X++.

Комментарии

Добавьте комментарии в код. Примечания упрощают чтение и понимание программы. Компилятор игнорирует комментарии. Вы можете использовать // стиль или /* стиль для комментариев. Однако используйте // стиль для комментариев, даже для многостроковых комментариев.

// This is an example of a comment.
/* Here is another example of a comment. */

Используйте инструкцию печати для отправки текста с помощью System.Diagnostics.WriteLine в окно вывода Visual Studio. Во время тестирования оператор печати является альтернативой методу Global::info , который отображает текст в окне Infolog . В следующей таблице сравниваются оператор печати и метод сведений .

Функция оператор print Метод info
Простота вызова Оператор печати автоматически преобразует различные типы данных в строки. Он может преобразовать несколько типов данных в одном вызове. Метод сведений требует, чтобы входной параметр был строкой.
Возможность копирования содержимого в буфер обмена Вы можете легко скопировать текст из окна вывода в буфер обмена. Вы можете легко скопировать текст из окна Infolog в буфер обмена.
Типичное применение Используйте инструкцию печати для удобства во время тестирования. Это поможет вам отлаживать небольшие проблемы, не выполняя формальный отладчик. Используйте метод сведений для рабочей среды.

Пример инструкции печати

В следующем примере кода показано, как оператор печати автоматически преобразует любой тип даты в строку. Вам не нужно префиксировать сведения с global:: при вызове.

str hello = "Hello";
int fortytwo = 42;
utcDateTime now = DateTimeUtil::utcNow();
Dialog dialog = new Dialog();

print "The print statement automatically converts data types to strings.";
print hello, " -- ", fortytwo, " -- ", now, " -- ", dialog;
// Output to the Print window:
// The print statement automatically converts data types to strings.
// Hello -- 42 -- 10/3/2011 09:18:10 pm -- 1

// int2Str converter is needed when using info().
info("Hello");
info(int2Str(fortytwo));

// Output to Infolog window:
// Hello
// 42

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

Компилятор распознает строку TODO , когда она возникает в начале комментария. Строка TODO предложит компилятору сообщить остальную часть текста комментария в окне списка задач в Microsoft Visual Studio. Чтобы открыть окно списка задач , выберите "Вид" и выберите "Окно задачи". Окно задач сообщает номер строки, где в коде можно найти комментарий TODO .

Ниже приведены правила использования TODO в комментариях:

  • Строка TODO может отображаться в примечании, использующего // стиль или /* стиль.
  • Строка TODO должна быть первой строкой, отличной от пробелов в комментарии. Возврат каретки, канал строки, вкладка и пробел считаются пробелами.
  • Пробелы между началом комментария и TODO не требуются.
  • Строка TODO не учитывает регистр. Однако соглашение заключается в том, чтобы ввести TODO во всех прописных буквах вместо ToDo или другого варианта.
  • Строка TODO может содержать любые символы, добавленные к нему. Однако соглашение заключается в том, чтобы добавить двоеточие в строку TODO или следовать за ним пробелом.
  • Остальная часть комментария после строки TODO сообщается как описание задачи. Если комментарий превышает 200 символов, на вкладке "Задачи " может появиться усечение.
  • Описание задачи TODO может распространяться по нескольким строкам при /* использовании стиля комментариев.

Примеры комментариев TODO

В следующих примерах показаны комментарии TODO .

// An example of using TODO in the // style of comment.
public boolean isLate()
{
    // TODO: Finish this stub.
    return true;
}

// An example of using TODO in the /* */ style of comment.
public boolean isLate()
{
    /* TODO Finish this stub */
    return true;
}

Неподдерживаемые операторы: приостановка и окно

Ключевые слова приостановки и окна больше не являются частью языка X++. Эти ключевые слова вызывают ошибки компиляции при их использовании.

Пропущенные операторы: сервер и клиент

В предыдущих версиях (AX2012 и более ранних версиях) можно назначить метод для запуска на клиенте или сервере. Это обозначение больше не возможно, так как весь код X++ выполняется как CIL .NET на сервере. Ключевые client слова и server игнорируются. Их использование не вызывает ошибку компиляции, но не используйте их в новом коде X++.

использование предложений

Используйте предложения с помощью , чтобы у вас не было полного имени типа. Предложение using должно соответствовать классу, к которому он применяется, и вам потребуется в каждом исходном файле, к которому он должен применяться. Как правило, все предложения using помещают в начало исходного файла. Вы также можете указать псевдонимы, введющие короткое имя для полного имени. Псевдонимы могут обозначить пространства имен или классы.

В следующем примере показано предложение using , псевдоним пространства имен и псевдоним класса.

using System;
using IONS=System.IO; // Namespace alias
using Alist=System.Collections.ArrayList; // Class alias

class UsingClass
{
    public static void test()
    {
        Int32 I;                  // Alternative to System.Int32
        Alist al = new Alist();   // Using a class alias
        al.Add(1);
        str s = IONS.Path::ChangeExtension(@"c:\tmp\test.xml", ".txt"); // Using a namespace alias
    }
}

выражения using

Инструкция using помогает гарантировать правильность удаления объектов, реализующих IDisposable . При использовании объекта IDisposable объявите его и создайте экземпляр в инструкции using . Оператор using вызывает метод Dispose в объекте правильно, даже если исключение возникает при вызове методов объекта. Вы можете добиться того же результата, поместив объект в блок try , а затем явным образом вызывая Dispose в блоке, наконец . Инструкция using упрощает синтаксис и правильно удаляет объект. Ниже приведен синтаксис инструкции using :

using (expression) {statement}

В этом синтаксисе оператор может быть блоком инструкций, а выражение объявляет и создает экземпляр объекта, реализующего IDisposable. В следующем примере создается и используется объект StreamReader .

static void AnotherMethod()
{
    str textFromFile;
    using (System.IO.StreamReader sr = new System.IO.StreamReader("c:\\test.txt"))
    {
        textFromFile = sr.ReadToEnd();
    }
}