我想使用C#类型的数组。
我尝试在Haxe 4.0.5中构建以下代码,但是hoges在C#中是Array<object>
。 (我想要Array<Hoge>
)
class ArrayTest
{
public var hoges: Array<Hoge>;
}
class Hoge
{
public var x: Int;
public var y: Int;
public var z: Int;
}
我在github上找到了以下帖子,并了解此行为是使代码更快的规范。 https://github.com/HaxeFoundation/haxe/issues/5434#issuecomment-230581990。
但是,我希望它带有一种类型,因为我想将此代码用作接口。 有什么解决方法吗?
答案 0 :(得分:2)
如果主要是为了与外部代码进行交互,则使用特定于C#的集合可能更合适:
import cs.system.collections.generic.List_1;
class Main {
public static var hoges:List_1<Hoge> = new List_1();
static function main() {
hoges.Add(new Hoge());
trace(hoges[0]);
}
}
class Hoge {
public var x: Int;
public var y: Int;
public var z: Int;
public function new() {}
}
产生
public static global::System.Collections.Generic.List<global::Hoge> hoges;
如您所愿。
摘要可用于根据目标平台切换实现。
答案 1 :(得分:2)
您可以使用NativeArray
typedef Hoges = cs.NativeArray<Hoge>;
class ArrayTest { public var hoges: Hoges; }
正在生成
public global::Hoge[] hoges;