В этой статье мы познакомимся с новыми возможностями X++ Dynamics 365, которые позаимствовали из синтаксиса C#. Для тех, кто ранее разрабатывал на языках с Си-подобным синтаксисом новые функции X++ будут приятным сюрпризом.
Объявление переменных
Раньше все локальные переменные нужно было помещать в начало метода, в котором они используются. Сейчас появилась возможность объявления переменных в любой части кода. Переменные, которые будут объявлены внутри условных операторов или циклов будут использоваться только внутри этих операторов.
Пример объявления переменной внутри цикла for
void MyMethod()
{
for (int i = 0; i < 10; i++)
{
info(strfmt("i is %1", i));
}
}
Пример объявления переменной в теле цикла for
for(int i = 1; i < 10; i++)
{
str s = int2str(i);
info(s);
}
Статические конструкторы и статические поля
Статический конструктор используется для инициализации любых статических данных или выполнения определенных действий, которые необходимо выполнить только один раз. Статический конструктор не имеет доступа к локальным переменным класса. Статический конструктор объявляется следующим образом
static void TypeNew()
Статические переменные — это переменные, объявленные с использованием ключевого слова static. Концептуально они относятся к классу, а не к экземпляру класса.
Пример использования статического конструктора и переменной
public class MyClass
{
private static MyClass instance;
private void new()
{
...
}
static void TypeNew()
{
instance = new MyClass();
}
public static MyClass Instance()
{
return MyClass::instance;
}
}
Инициализация класса в коде
MyClass i = MyClass::Instance();
Прямой доступ к переменным класса
Теперь к переменным экземпляра класса можно обращаться напрямую без использования методов parm.
Пример
public class MyClass
{
public int field1;
public str field2;
void new()
{
this.field1 = 1;
this.field2 = "Manana";
}
}
public class MyClass1
{
MyClass myClass;
int field1;
void new()
{
myClass = new MyClass();
this.field1 = myClass.field1;
}
}
Константы
Макросы по-прежнему поддерживаются в X++, но использование констант имеет ряд преимуществ:
— Константы видны в IntelliSense
— Константы используются в перекрестных ссылках
— Константа может быть объявлена с указанием модификатора доступа
— В отладчике можно увидеть значение константы
Пример объявления константы
public const str MyConstant = 'Value';
Пример использование в коде
str value = MyClass::MyConstant;
Тип Var
Теперь можно объявить переменную без явного указания типа, если компилятор может определить тип из выражения инициализации. Нужно обратить внимание, что переменная по-прежнему имеет конкретный тип. Это может облегчить чтение кода, но нужно правильно использовать тип Var. Нужно учитывать следующие правила:
— Использовать тип Var можно для локальных переменных, если в выражении инициализации тип является очевидным
— Не нужно использовать тип Var, если из выражения инициализации тип не является очевидным
— Можно использовать тип Var для счетчиков циклов
— Можно использовать тип Var в операторе using
Блок finally в операторе try/catch
Оператор try/catch теперь может включать необязательный блок finally, который будет выполнятся независимо от того как отработает код в блоке try.
Пример использования блока finally
try
{
// ...
}
catch
{
// обработка исключения
}
finally
{
// выполнятся независимо от того как отработает код в блоке try
}
Директива using
Использование директивы using обеспечивает доступ к определенным объектам, не созданным в X++, без указания сборки. Так же using используется для создания псевдонима сборки.
Пример использования директивы using
using System;
using IO = System.IO;
public class MyClass
{
public static void Main(Args a)
{
Int32 i;
str s;
s = IO.Path::ChangeExtension(@"c:\temp\test1.txt", ".xml");
}
}
Все комментарии
Чтобы оставить комментарий, необходимо войти или зарегистрироваться.
Пока нет комментариев. Будьте первым!