public static void ByteOffsetStackByte4() { var byte4 = new Byte4(); Assert.Equal(new IntPtr(0), Unsafe.ByteOffset(ref byte4.B0, ref byte4.B0)); Assert.Equal(new IntPtr(1), Unsafe.ByteOffset(ref byte4.B0, ref byte4.B1)); Assert.Equal(new IntPtr(-1), Unsafe.ByteOffset(ref byte4.B1, ref byte4.B0)); Assert.Equal(new IntPtr(2), Unsafe.ByteOffset(ref byte4.B0, ref byte4.B2)); Assert.Equal(new IntPtr(-2), Unsafe.ByteOffset(ref byte4.B2, ref byte4.B0)); Assert.Equal(new IntPtr(3), Unsafe.ByteOffset(ref byte4.B0, ref byte4.B3)); Assert.Equal(new IntPtr(-3), Unsafe.ByteOffset(ref byte4.B3, ref byte4.B0)); }
public static void ByteOffsetArray() { var a = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7 }; Assert.Equal(new IntPtr(0), Unsafe.ByteOffset(ref a[0], ref a[0])); Assert.Equal(new IntPtr(1), Unsafe.ByteOffset(ref a[0], ref a[1])); Assert.Equal(new IntPtr(-1), Unsafe.ByteOffset(ref a[1], ref a[0])); Assert.Equal(new IntPtr(2), Unsafe.ByteOffset(ref a[0], ref a[2])); Assert.Equal(new IntPtr(-2), Unsafe.ByteOffset(ref a[2], ref a[0])); Assert.Equal(new IntPtr(3), Unsafe.ByteOffset(ref a[0], ref a[3])); Assert.Equal(new IntPtr(4), Unsafe.ByteOffset(ref a[0], ref a[4])); Assert.Equal(new IntPtr(5), Unsafe.ByteOffset(ref a[0], ref a[5])); Assert.Equal(new IntPtr(6), Unsafe.ByteOffset(ref a[0], ref a[6])); Assert.Equal(new IntPtr(7), Unsafe.ByteOffset(ref a[0], ref a[7])); }