【发布时间】:2011-12-02 10:30:34
【问题描述】:
我想将 c# 代码转换为 j#,并设法克服了 dllimport 和 marshalas。
问题是,当函数引用对象时,无法识别 ref
public static native int Mathod(ref Type type, int flags);
任何人都使用过 j# 并且知道如何将引用发送到方法(或在方法中定义类型作为引用)
【问题讨论】:
标签: c# reference dllimport j# visualj#
我想将 c# 代码转换为 j#,并设法克服了 dllimport 和 marshalas。
问题是,当函数引用对象时,无法识别 ref
public static native int Mathod(ref Type type, int flags);
任何人都使用过 j# 并且知道如何将引用发送到方法(或在方法中定义类型作为引用)
【问题讨论】:
标签: c# reference dllimport j# visualj#
我很确定你不能直接这样做。
在real Java 中,所有东西都是按值传递的,大概在 J# 中也是如此。
在 Java you can workaround the restriction by using AtomicReference 的最新版本中,但我非常怀疑 J# 是否足够最新以支持这一点。
您可以尝试更改方法签名以接受单个元素 Type[] 数组,然后改变该数组元素。这将使您获得与ref 类似的结果。缺点是您需要更改调用站点和方法本身来包装和解开数组中的变量。 (尽管您可以创建自己的自定义类型来封装包装和展开,如果它可以简化事情。)
【讨论】: