Ho due classiE 'possibile copiare i campi di classe con pericoloso
[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;
}
Esiste il modo per copiare dati di campi da istanza di DTO o istanza di modello? Per un singolo campo ho seguente codice
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;
}
}
}
non C# forniscono metodo simile per copiare tutto l'oggetto? La copia campo per campo non è desiderabile a causa dell'ambiente ad alte prestazioni.
Vuoi dire, come un [c memcpy] (http://www.cplusplus.com/reference/cstring/memcpy/)? – StuartLC
Queste dovrebbero essere semplici strutture. Non ha senso fare qualcosa di non sicuro, puoi semplicemente assegnare. Esistono tipi di valore per rendere il codice più veloce, usarli. –
"La copia campo per campo non è auspicabile a causa dell'ambiente ad alte prestazioni." ==> L'hai misurato? Qualche problema di prestazioni? – ken2k