リファレンスタイプについて興味深いテスト

3403 ワード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyTest
{
    class Program
    {
        static void Main(string[] args)
        {
            MyClass first = new MyClass();
            first.value = " ";
            MyClass second = first;

            // 
            Console.WriteLine("" + second.value);
            // 
            first.value = " ";
            Console.WriteLine("" + second.value);

            first = null;
            //Console.WriteLine("first null first :" + first.value);// 
            Console.WriteLine("first null second :" + second.value);
            
            Console.ReadKey();
        }
    }

    public class MyClass
    {
        public string value { get; set; }
    }
}

上から得られる:
1.まずMyClassは参照タイプ
2.firstの値が変わるとsecondの値も変わる
3.firstがnullを設定すると、first内のポインタが空になります(firstにアクセスするとポインタが空になります)が、メモリ内のオブジェクトは空になりません(secondにアクセスしても値を取得できます)