साथ वर्ग क्षेत्रों कॉपी करने के लिए संभव है मैं दो वर्गोंयह असुरक्षित
[StructLayout(LayoutKind.Explicit, Size = 12, CharSet = CharSet.Ansi)]
unsafe class Dto
{
[FieldOffset(0)]
public int B;
[FieldOffset(4)]
public int C;
[FieldOffset(8)]
public int D;
}
[StructLayout(LayoutKind.Explicit, Size = 12, CharSet = CharSet.Ansi)]
unsafe class Model
{
[FieldOffset(0)]
public int B;
[FieldOffset(4)]
public int C;
[FieldOffset(8)]
public int D;
}
वहाँ रास्ता ओ मॉडल का उदाहरण डीटीओ के कहने से क्षेत्रों से डेटा की प्रतिलिपि है है? एक भी क्षेत्र के लिए मैं कोड निम्नलिखित है
var a1 = new Dto { B = 10, C = 20, D = 30 };
var a2 = new Model();
unsafe
{
fixed (int* pa1 = &(a1.B))
{
fixed (int* pa2 = &(a2.B))
{
*pa2 = *pa1;
}
}
}
करता है सी # पूरी वस्तु को कॉपी करने के समान विधि प्रदान करते हैं? उच्च प्रदर्शन वातावरण के कारण फ़ील्ड-बाय-फील्ड कॉपी करना वांछनीय नहीं है।
तुम्हारा मतलब है, की तरह एक [ग memcpy] (http://www.cplusplus.com/reference/cstring/memcpy/)? – StuartLC
ये सादे structs होना चाहिए। असुरक्षित कुछ भी करने में कोई बात नहीं, आप बस असाइन कर सकते हैं। कोड को तेज़ी से बनाने के लिए मूल्य प्रकार मौजूद हैं, उनका उपयोग करें। –
"उच्च प्रदर्शन वातावरण के कारण क्षेत्र-दर-क्षेत्र कॉपी करना वांछनीय नहीं है।" ==> क्या आपने इसे माप लिया है? कोई वास्तविक प्रदर्शन मुद्दा? – ken2k