मेरे सी # एप्लिकेशन में मुझे कॉलबैक/प्रतिनिधि में सी ++ संरचना के लिए पॉइंटर प्राप्त होता है। मुझे यकीन नहीं है कि class
चाल कर सकता है लेकिन उचित सी # संरचना के लिए सी ++ पॉइंटर कास्टिंग ठीक काम करता है, इसलिए मैं डेटा संग्रह करने के लिए सी # संरचना का उपयोग कर रहा हूं।पास सी # संरचना?
अब मैं आगे की प्रक्रिया के
- मैं
class
उपयोग नहीं कर सकते क्योंकि यह शायद पूरी तरह से C++ struct करने के लिए "मानचित्र" नहीं होगा के लिए struct के संदर्भ में पारित करने के लिए चाहते हैं। - मैं बेहतर विलंबता के लिए struct नकल नहीं करना चाहती
मैं ऐसा कैसे कर सकता है?
यह उदाहरण दर्शाता है कि struct, मूल्य द्वारा पारित कर दिया है संदर्भ द्वारा नहीं:
using System;
namespace TestStruct
{
struct s
{
public int a;
}
class Program
{
static void Main(string[] args)
{
s s1 = new s
{
a = 1
};
Foo(s1);
Console.WriteLine("outer a = " + s1.a);
}
private static void Foo(s s1)
{
s1.a++;
Console.WriteLine("inner a = " + s1.a);
}
}
}
आउटपुट है:
inner a = 2
outer a = 1
संरचना के बारे में आपके तर्क से सावधान रहें: सी ++ में 'संरचना' बिल्कुल कक्षा (डिफ़ॉल्ट पहुंच को छोड़कर) के समान है, जबकि सी # में वे पूरी तरह अलग हैं - मूल्य और संदर्भ प्रकार। संभावना है कि आप सी # में कक्षाओं के साथ वास्तव में बेहतर होंगे - कम से कम पढ़े और समझें कि 'संरचना' सी # में कैसे व्यवहार करती है। –
मेरी इंटरऑप कक्षाओं की एक बड़ी संख्या वास्तव में कक्षाएं हैं और structs नहीं हैं। यदि आप सही ढंग से marshalling (और अक्सर डिफ़ॉल्ट marshalling काम करता है) स्थापित करते हैं तो आप एक वर्ग का उपयोग कर सकते हैं। यदि संदेह है, तो मैं पहले कक्षा के साथ प्रयास करता हूं। –