参照型と値型のEquals
参照型と値型での Object.Equals メソッド の動作の違い。
- 参照型: 同一オブジェクトならば true
- 値型: 保持している値が同じならば true
using System; namespace EqualForValueTypeAndReferenceType { class Program { static void Main(string[] args) { ReferenceType ref1 = new ReferenceType(123); ReferenceType ref2 = new ReferenceType(123); Console.WriteLine("ref1.Equals(ref2) = {0}", ref1.Equals(ref2)); ValueType val1 = new ValueType(123); ValueType val2 = new ValueType(123); Console.WriteLine("val1.Equals(val2) = {0}", val1.Equals(val2)); } } class ReferenceType { private int _intValue; internal ReferenceType(int intValue) { _intValue = intValue; } } struct ValueType { private int _intValue; internal ValueType(int intValue) { _intValue = intValue; } } }