Example #1
0
    public static unsafe int Main()
    {
        TestDelegate   del = (TestDelegate)Delegate.CreateDelegate(typeof(TestDelegate), typeof(CopyCtor).GetMethod("StructWithCtorTest"));
        StructWithCtor s1  = new StructWithCtor();
        StructWithCtor s2  = new StructWithCtor();

        s1._instanceField = 1;
        s2._instanceField = 2;
        int returnVal = FunctionPointer.Call_FunctionPointer(Marshal.GetFunctionPointerForDelegate(del), &s1, ref s2);

        GC.KeepAlive(del);

        return(returnVal);
    }
Example #2
0
    public static unsafe int StructWithCtorTest(StructWithCtor *ptrStruct, ref StructWithCtor refStruct)
    {
        if (ptrStruct->_instanceField != 1)
        {
            return(1);
        }
        if (refStruct._instanceField != 2)
        {
            return(2);
        }

        if (StructWithCtor.CopyCtorCallCount != 2)
        {
            return(3);
        }
        if (StructWithCtor.DtorCallCount != 2)
        {
            return(4);
        }


        return(100);
    }