🔥 CLR library
clr — это пакет для доступа к типам и пространствам имен .NET Framework. Пакет связывает вызовы с хост-приложением и классами .NET Framework. ВНИМАНИЕ: Работает ТОЛЬКО с включенным "Allow unsafe scripts"
CLR поддерживает:
CLR поддерживает:Статические методы
Методы экземпляра
Перегруженные методы
Конструкторы
Свойства
Типы
Подтипы
События
Генерики
Немного примеров
local sys = clr.System;Данный код создает динамический экземпляр типа для пространства имен System и присваивает этот новый тип локальной переменной sys. Оба следующих вызова эквивалентны:
local stringbuilder = sys.Text.StringBuilder;
local stringbuilder = clr.System.Text.StringBuilder; -- тот же результатИспользуйте эту переменную, для доступа к типу StringBuilder.
Чтобы создать новый объект из типа, вызовите тип как функцию. Это вызовет конструктор и создаст экземпляр.
local sb = StringBuilder('text');
local sb1 = clr.System.Text.StringBuilder('test'); -- тот же результатЕсли тип является обобщенным, используйте индексный доступ для создания не обобщенного класса.
local list_object = clr.System.Collections.Generic.List[clr.System.Object]();
local list_generic = clr.System.Collections.Generic.List;
local list_string = ListGeneric[clr.System.String]();
local list_string_type = ListGeneric[clr.System.String];
local list_string2 = ListStringType();💡 Совет: Используйте const для часто используемых типов, чтобы улучшить читаемость и производительность кода.
const для часто используемых типов, чтобы улучшить читаемость и производительность кода.Лучший способ сократить типы — использовать ключевое слово const. Потому что оно не создает накладных расходов во время выполнения, оно известно только во время компиляции. Осторожно, clr не нужен.
const. Потому что оно не создает накладных расходов во время выполнения, оно известно только во время компиляции. Осторожно, clr не нужен.const list_of_objects typeof System.Collections.Generic.List[System.Object];
local new_list = list_of_objects()
new_list.Add("hello world!")
log(new_list[1])Если вы объедините это с явной типизацией, синтаксический анализатор вообще не будет выполнять динамические вызовы, и время выполнения этого скрипта будет таким же, как, например, у метода C#.
const StringBuilder typeof System.Text.StringBuilder();
local sb : StringBuilder = StringBuilder();
sb:Append('Hallo '):Append('Welt!');
return sb:ToString();Last updated