値型と参照型

値型/参照型、構造体/クラス備忘録

値型はオブジェクト内にインライン定義され、 参照型は、実データをヒープに格納する。

その型をどのように扱うかを考え、 多様性(ポリモーフィズム)を持つか否かを考える必要がある。

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace UnitTestProject1
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            // 値型
            var valueType = new ValueType
            {
                value = 1
            };
            
            // 参照型
            var classType = new ClassType
            {
                value = 1
            };

            Plus(valueType, classType);

            Assert.AreEqual(1, valueType.value);
            Assert.AreEqual(2, classType.value);
        }

        static void Plus(ValueType valueType, ClassType classType)
        {
            valueType.value += 1;
            classType.value += 1;
        }

        struct ValueType { public int value; }
        class ClassType { public int value; }
    }
}