tailieunhanh - Boxing

Quyền anh Như bạn đã thấy, các biến của loại đối tượng có thể tham khảo bất kỳ đối tượng của bất kỳ loại tài liệu tham khảo. Đó là, họ có thể tham khảo bất kỳ một thể hiện của lớp. Tuy nhiên, các biến của loại đối tượng cũng có thể tham khảo một loại giá trị. | Boxing As you have just seen variables of type object can refer to any object of any reference type. That is they can refer to any instance of a class. However variables of type object can also refer to a value type. For example the following two statements initialize the variable i of type int a value type to 42 and then initialize the variable o of type object a reference type to i int i 42 object o i The effect of the second statement is subtle. Remember that i is a value type and it exists in the stack. If the reference inside o referred directly to i the reference would be referring to the stack. However all references refer to objects on the heap. Instead a piece of memory is allocated from the heap an exact copy of the value inside i is stored in this piece of memory and the reference inside o is pointed to the copy. Creating references to items on the stack could seriously compromise the robustness of the runtime and create a potential security flaw so it is not allowed. This automatic copying of an item from the stack to the heap is called boxing. The following graphic shows the result IMPORTANT If you modify the original value of a variable you are not modifying the value that now exists on the heap because it s just a .