Exemplo n.º 1
0
        public void RefRefReturnToVoid()
        {
            string SetSmallConstant(ref int a1, ref float a2)
            {
                return(default(string));
            }

            var objRef  = Parameter(typeof(int).MakeByRefType());
            var objRef2 = Parameter(typeof(float).MakeByRefType());
            var lambda  = Lambda <ActionRefRef <int, float> >(Constant(default(object)), objRef, objRef2);

            var compiledB = lambda.CompileFast <ActionRefRef <int, float> >(true);
            var exampleB  = default(int);
            var exampleB2 = default(float);

            compiledB(ref exampleB, ref exampleB2);
            Assert.AreEqual(0, exampleB);

            ActionRefRef <int, float> direct = (ref int x, ref float y) => SetSmallConstant(ref x, ref y);
            var exampleC  = default(int);
            var exampleC2 = default(float);

            direct(ref exampleC, ref exampleC2);
            Assert.AreEqual(0, exampleC);
        }
        public void RefRefVoid()
        {
            void SetSmallConstant(ref int a1, ref float a2)
            {
            }

            var objRef  = Parameter(typeof(int).MakeByRefType());
            var objRef2 = Parameter(typeof(float).MakeByRefType());
            var lambda  = Lambda <ActionRefRef <int, float> >(Constant(default(object)), objRef, objRef2);

            var compiledA = lambda.Compile();
            var exampleA  = default(int);
            var exampleA2 = default(float);

            compiledA(ref exampleA, ref exampleA2);
            Assert.AreEqual(0, exampleA);

            var compiledB = lambda.CompileFast <ActionRefRef <int, float> >(true);
            var exampleB  = default(int);
            var exampleB2 = default(float);

            compiledB(ref exampleB, ref exampleB2);
            Assert.AreEqual(0, exampleB);

            ActionRefRef <int, float> direct = SetSmallConstant;
            var exampleC  = default(int);
            var exampleC2 = default(float);

            direct(ref exampleC, ref exampleC2);
            Assert.AreEqual(0, exampleC);
        }