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); }
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); }