C# 引用类型赋值指向的是同一块内存

首先,属性是引用类型。引用类型之间赋值传递后,他们访问的应该是同一块内存区。

来测试一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
using System;  

namespace ConsoleApp1
{
    class Program
    {
        static void Main()
        {
            A aa = new A();

            aa.aaa();

            Console.ReadKey();
        }
    }

    class Test
    {
        public int a = 100;
    }

    class A
    {
        private Test TestA { getset; } = new Test();
        private B b = new B();

        public void aaa()
        {
            Console.WriteLine( "之前:" + TestA.a);
            this.b.TestB = this.TestA;
            this.b.TestB.a = 200;  // 通过对象b来更改。
            Console.WriteLine("之后:" + TestA.a);
        }
    }

    class B
    {
        public Test TestB { getset; }
    }
}

输出:

1
2
之前:100  
之后:200

可见,对象b能够访问TestA属性指向的内存Test对象。

感谢支持!