Domanda

Volevo convertire un codice c # in j # e in qualche modo sono riuscito a superare dllimport e marshalas.

Il problema è che quando una funzione ha un riferimento a un oggetto, ref non viene riconosciuto

pubblico statico nativo int Mathod (ref Type type, int flags);

Chiunque ha esperienza con j # e sa come inviare riferimenti a un metodo (o definire un tipo in un metodo come riferimento)

È stato utile?

Soluzione

Sono abbastanza sicuro che non puoi farlo direttamente.

Tutto viene passato per valore in real Java e presumibilmente anche in J #.

Nelle versioni recenti di Java puoi aggirare la restrizione utilizzando AtomicReference, ma dubito fortemente che J # sia abbastanza aggiornato da supportare questo.

Potresti provare a cambiare la firma del metodo per accettare un array Type[] a singolo elemento, quindi modificare quell'elemento dell'array.Ciò consentirebbe di ottenere un risultato simile a ref.Lo svantaggio è che avresti bisogno di cambiare il sito di chiamata e il metodo stesso per avvolgere e scartare la variabile nell'array.(Sebbene tu possa creare il tuo tipo personalizzato per incapsulare l'avvolgimento e lo scartamento se semplifica le cose.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top