Spec-Zone.ru › Haxe C#

Lib

package cs

Доступно в cs

Библиотека C# для платформы. Предоставляет некоторые платформенно-специфичные функции для целевой платформы C#, такие как преобразование из типов Haxe в родные типы и обратно.

Статические методы

staticinlineaddressOf<T>(variable:T):Pointer<T>

Возвращает указатель на адрес текущего локального значения. Эквивалентно оператору "&" в C#. Использование:

var x:Int = 0;
cs.Lib.unsafe({
	var addr = cs.Lib.addressOf(x);
	x[0] = 42;
});
trace(x); //42

Этот метод существует только во время компиляции, поэтому его нельзя вызывать с помощью рефлексии. Предупреждение: этот метод будет работать только в том случае, если локальная переменная передаётся в качестве аргумента.

staticapplyCultureChanges():Void

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

staticinlinearray<T>(native:NativeArray<T>):Array<T>

Возвращает массив Haxe из родного массива. Если erase_generics не определён, содержимое родного массива не копируется, поэтому все изменения, внесённые в массив Haxe, будут влиять на аргумент родного массива, за исключением случаев изменения размера массива.

staticinlinearrayAlloc<T>(size:Int):Array<T>

Выделяет новый массив Haxe с заданным размером.

staticinlineas<T>(obj:Dynamic, cl:Class<T>):T

Обеспечивает поддержку оператора «as» в C#. Если объект не является объектом указанного типа «T», он вернёт null вместо исключения.

Эта функция не работает с типами значений (такими как Int, Float, Bool...).

staticinlinechecked<V>(block:V):Void

Создаёт блок «checked», который выбрасывает исключение при переполнении.

Использование:

cs.Lib.checked({
	var x = 1000;
	while(true)
	{
		x *= x;
	}
});

Этот метод существует только во время компиляции, поэтому его нельзя вызывать с помощью рефлексии.

staticinlinefixed<V>(block:V):Void

Помечает параметры как фиксированные объекты внутри определённого блока. Первые объявления переменных, использующие cs.Lib.pointerOfArray(), будут фиксированными определениями. Использование:

cs.Lib.fixed({
	var obj1 = cs.Lib.pointerOfArray(someArray);
	var obj2 = cs.Lib.pointerOfArray(someArray2);
	var obj3 = cs.Lib.pointerOfArray(someArray3);
	//from now on, obj1, obj2 and obj3 are fixed
	//we cannot change obj1, obj2 or obj3 variables like this:
	//obj1++;
});

Этот метод существует только во время компиляции, поэтому его нельзя вызывать с помощью рефлексии.

staticinlinefromNativeType(t:Type):Class<Dynamic>

Возвращает эквивалент типа System.Type в виде Class<>.

В настоящее время Haxe's Class<> эквивалентен System.Type, но это деталь реализации. Это может измениться в будущем, поэтому используйте эту функцию всякий раз, когда вам нужно выполнить такое преобразование.

staticinlinegetNativeType(obj:Dynamic):Type

Получает родной тип System.Type из переданного объекта. Выбросит исключение в случае передачи null.

staticinlinelock<O, V>(obj:O, block:V):Void

Гарантирует, что одна нить не войдёт в критическую секцию кода, пока другая нить находится в этой секции. Если другая нить попытается войти в заблокированный код, она будет ждать, заблокирована, пока объект не будет освобождён.

Этот метод существует только во время компиляции, поэтому его нельзя вызывать с помощью рефлексии.

staticinlinenativeArray<T>(arr:Array<T>, equalLengthRequired:Bool):NativeArray<T>

Возвращает родной массив из переданного массива. Этот родной массив небезопасен для записи, так как он может или не может быть связан с фактической реализацией массива.

Если equalLengthRequired имеет значение true, результат может быть копией массива с правильным размером.

staticinlinenativeType(obj:Dynamic):Type

Устаревший: Функция «nativeType» устарела и будет удалена в будущих версиях. Используйте вместо неё «getNativeType»

Возвращает родной тип System.Type из переданного объекта. Выбросит исключение в случае передачи null. [устарело] - используйте getNativeType вместо этого

staticinlinepointerOfArray<T>(array:NativeArray<T>):Pointer<T>

Преобразует управляемый родной массив в указатель. Должен быть внутри оператора fixed. Использование:

var x:cs.NativeArray<Int> = new cs.NativeArray(1);
cs.Lib.unsafe({
	cs.Lib.fixed({
		var addr = cs.Lib.pointerOfArray(x);
		trace(cs.Lib.valueOf(addr)); //0
		addr[0] = 42;
		trace(cs.Lib.valueOf(addr)); //42
	});
});
trace(x[0]); //42

Этот метод существует только во время компиляции, поэтому его нельзя вызывать с помощью рефлексии.

staticinlinerethrow(e:Dynamic):Void

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

staticrevertDefaultCulture():Void

Возвращает настройки культуры к значениям по умолчанию.

staticinlinesizeof(struct:Class<Dynamic>):Int

Возвращает размер в байтах заданной структуры. Работает только со структурами и базовыми типами.

staticinlinetoNativeEnum(cl:Enum<Dynamic>):Type

Возвращает эквивалент типа Haxe Enum<> в виде System.Type.

staticinlinetoNativeType(cl:Class<Dynamic>):Type

Возвращает эквивалент типа Haxe Class<> в виде System.Type.

В настоящее время Haxe's Class<> эквивалентен System.Type, но это деталь реализации. Это может измениться в будущем, поэтому используйте эту функцию всякий раз, когда вам нужно выполнить такое преобразование.

staticinlineunsafe<V>(block:V):Void

Помечает содержащийся блок как небезопасный, то есть он может содержать небезопасный код. Использование:

cs.Lib.unsafe({
	//unsafe code is allowed inside here
});

Этот метод существует только во время компиляции, поэтому его нельзя вызывать с помощью рефлексии.

staticinlinevalueOf<T>(pointer:Pointer<T>):T

Получает значение по указанному адресу. Использование:

var x:Int = 0;
cs.Lib.unsafe({
	var addr = cs.Lib.addressOf(x);
	trace(cs.Lib.valueOf(addr)); //0
	addr[0] = 42;
	trace(cs.Lib.valueOf(addr)); //42
});
trace(x); //42

Этот метод существует только во время компиляции, поэтому его нельзя вызывать с помощью рефлексии.

© 2005–2020 Haxe Foundation
Licensed under a MIT license.
https://api.haxe.org/cs/Lib.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API