سؤال

كنت أرغب في تحويل كود c# إلى j# وتمكنت بطريقة ما من تجاوز dllimport وmarshalas.

المشكلة هي أنه عندما تحتوي الدالة على مرجع لكائن ما - لا يتم التعرف على المرجع

Mathod الأصلي الثابت العام (نوع نوع المرجع ، أعلام int) ؛

أي شخص لديه أي خبرة في j# ويعرف كيفية إرسال مراجع إلى طريقة ما (أو تحديد نوع في الطريقة كمرجع)

هل كانت مفيدة؟

المحلول

أنا متأكد من أنك لا تستطيع القيام بذلك مباشرة.

يتم تمرير كل شيء حسب القيمة حقيقي Java، ويفترض أنه في J# أيضًا.

في الإصدارات الأخيرة من جافا يمكنك الحل البديل للقيود باستخدام AtomicReference, ، لكنني أشك كثيرًا في أن J# محدث بما يكفي لدعم ذلك.

يمكنك محاولة تغيير توقيع الطريقة لقبول عنصر واحد Type[] صفيف، ثم قم بتغيير عنصر الصفيف هذا.هذا من شأنه أن يسمح لك بتحقيق نتيجة مماثلة ل ref.الجانب السلبي هو أنك ستحتاج إلى تغيير موقع الاتصال والطريقة نفسها للالتفاف وإلغاء تغليف المتغير في المصفوفة.(على الرغم من أنه يمكنك إنشاء نوع مخصص خاص بك لتغليف التغليف وإلغاء التغليف إذا كان ذلك يبسط الأمور.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top