質問

c#コードをj#に変換したかったのですが、どういうわけかdllimportとmarshalasを乗り越えることができました。

問題は、関数にオブジェクトへの参照がある場合、refが認識されないことです

public static native int Mathod(ref Type type、int flags);

誰でもj#の経験があり、メソッドへの参照を送信する方法(またはメソッド内の型を参照として定義する方法)を知っています

役に立ちましたか?

解決

これを直接行うことはできないと確信しています。

すべては実際の Javaでは値で渡され、おそらくJ#でも渡されます。

最近のバージョンのJava では、AtomicReferenceを使用して制限を回避できます。ですが、J#がこれをサポートするのに十分なほど最新であるかどうかは非常に疑わしいです。

メソッドシグネチャを変更して、単一要素のType[]配列を受け入れてから、その配列要素を変更してみてください。これにより、refと同様の結果を得ることができます。欠点は、配列内の変数をラップおよびアンラップするために、呼び出しサイトとメソッド自体を変更する必要があることです。(ただし、単純化する場合は、独自のカスタムタイプを作成して、ラッピングとアンラッピングをカプセル化することもできます。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top