示例#1
0
        public void should_perform_real_copy_operation_for_value_type()
        {
            var original = new ValueTypeDemoClass();

            ValueTypeDemoClass copy = original;
            bool isSameReference;

            // use unsafe keyword permit use pointer and perform c++-style pointer operations
            unsafe
            {
                // & returns a pointer to the address of variable
                // * returns the variable at the address of a pointer
                // -> ponit-to-member operator, x->y is equivalent to(*x).y
                ValueTypeDemoClass *originalPtr = &original;
                ValueTypeDemoClass *copyPtr     = ©

                // originalPtr -> original
                // copyPtr -> copy
                isSameReference = originalPtr == copyPtr;
            }

            // change the variable value to fix the test.
            const bool expectedIsSameReference = false;

            Assert.Equal(expectedIsSameReference, isSameReference);
        }
示例#2
0
        public void should_perform_real_copy_operation_for_value_type()
        {
            var original = new ValueTypeDemoClass();

            ValueTypeDemoClass copy = original;
            bool isSameReference;

            unsafe
            {
                ValueTypeDemoClass *originalPtr = &original;
                ValueTypeDemoClass *copyPtr     = ©

                isSameReference = originalPtr == copyPtr;
            }

            // change the variable value to fix the test.
            const bool expectedIsSameReference = true;

            Assert.Equal(expectedIsSameReference, isSameReference);
        }