public static void SealedBlittablePinned() { Console.WriteLine($"Running {nameof(SealedBlittablePinned)}..."); var blittable = new SealedBlittable(1); Assert.True(PointersEqual(blittable, ref blittable.a)); }
public static void SealedBlittableClass() { Console.WriteLine($"Running {nameof(SealedBlittableClass)}..."); SealedBlittable p = new SealedBlittable(10); Assert.IsTrue(SimpleBlittableSeqLayoutClassByRef(p)); }
private static void ValidateSealedBlittableClassInOut(Func <SealedBlittable, bool> pinvoke) { int a = 10; int expected = a + 1; SealedBlittable p = new SealedBlittable(a); Assert.IsTrue(pinvoke(p)); Assert.AreEqual(expected, p.a); }
public static void SealedBlittableClassByOutAttr() { Console.WriteLine($"Running {nameof(SealedBlittableClassByOutAttr)}..."); int a = 10; int expected = a + 1; SealedBlittable p = new SealedBlittable(a); Assert.IsTrue(SimpleBlittableSeqLayoutClassByOutAttr(p)); Assert.AreEqual(expected, p.a); }
private static extern bool SealedBlittableSeqLayoutClassByOutAttr([Out] SealedBlittable p);
private static extern bool SealedBlittableSeqLayoutClassByInAttr([In] SealedBlittable p);
private static extern bool SealedBlittableSeqLayoutClassByRef(SealedBlittable p);
private static extern bool PointersEqual(SealedBlittable obj, ref int field);