Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Группы интересов сообщества теперь переехали из 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();
}
}