/// <summary> /// 写数据 /// </summary> /// <param name="value"></param> public void Write(ref SubArray <byte> value) { if (value.Length != 0) { value.CopyTo(new Span <byte>(GetBeforeMove(value.Length), value.Length)); } }
private unsafe void serialize(AutoCSer.BinarySerializer serializer) { int size = Buffer.Length; if (IsClient) { serializer.Stream.Write(-size); } else { UnmanagedStream stream = serializer.Stream; if (size == 0) { byte *write = stream.GetBeforeMove(sizeof(int) * 2); *(int *)write = size; *(int *)(write + sizeof(int)) = (int)(byte)State; } else { int offset = -size & 3; byte *write = stream.GetBeforeMove(size + offset + sizeof(int)); *(int *)write = size; Buffer.CopyTo(new Span <byte>(write + sizeof(int), size)); } } }
private unsafe void serialize(AutoCSer.BinarySerializer serializer) { UnmanagedStream stream = serializer.Stream; int size = Buffer.Length, offset = -(size + sizeof(ushort)) & 3; byte * write = stream.GetBeforeMove(size + offset + (sizeof(int) + sizeof(ulong) + sizeof(ushort))); *(int *)write = size; *(ulong *)(write + sizeof(int)) = Index; Buffer.CopyTo(new Span <byte>(write + (sizeof(int) + sizeof(ulong)), size)); *(ushort *)(write + (size + (sizeof(int) + sizeof(ulong)))) = BlockIndex; }
public void CopyTo(byte[] values, int index) { array.CopyTo(values, index); }
public void CopyTo() { int[] array = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 }; var subarray = new SubArray<int>(array, 1, 6); int[] dest = new int[8]; subarray.CopyTo(dest, 1); Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 0, 2, 3, 4, 5, 6, 7, 0, }, dest)); }
internal static void CopyTo <T>(this SubArray <T> array, SubArray <T> subArray) { array.CopyTo(ref subArray); }