我有兩個類是否有可能類字段複製不安全
[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;
}
有從DTO的實例複製從字段的數據O模型的實例的方式嗎? 對於單場我有下面的代碼
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;
}
}
}
不C#提供了類似的方法來複制整個對象?由於高性能環境,逐場複製是不可取的。
你的意思是,像[C的memcpy(http://www.cplusplus.com/reference/cstring/memcpy/)? – StuartLC
這些應該是普通的結構。不要做任何不安全的事情,你可以簡單地分配。值類型的存在使代碼更快,使用它們。 –
「由於高性能環境,不適合複製逐場複製。」 ==>你測過它了嗎?任何實際的性能問題? – ken2k