b00k.jp ~積み上げ式読書ノート~
公開日:
最終更新日:2018/06/02

【C#】同値性と同一性

プログラミングをする上で、変数が同じかを比較するという操作は良く行われる。
しかし、この値の比較は値型と参照型で少し挙動が異なってくる。

C#

同値性と同一性

「変数が同じ」という時に、そこには2つの意味合いがある。

一つは、同値性
これは、二つの変数の値が同じであるということである。

もう一つは、同一性
これは、二つの変数が同じメモリを参照しているかということである。

値型、参照型、string型の比較方法

同一性、同値性を比較する際は、「==」演算子や「equals」メソッドを使用する。
しかし、これらはオブジェクトによって微妙に動きが異なるために、注意が必要になってくる。

値型

値型は、「==」、「equals」の両方で同値性を確認することができる。
「==」、「equals」のどちらを使用しても、値が同じかを検証するということ。
それぞれが別の変数(メモリ)に格納されていても関係ない。

参照型

参照型の場合は、「==」、「equals」で挙動が異なる。
「==」は、同一性、つまりそのオブジェクトが同じメモリを参照しているか。
「equals」は、同値性、つまりそのオブジェクトが同じ値を有するかを検証する。

参照型:string

参照型でもstringは、挙動がことなる。
「==」、「equals」どちらでも同値性の確認を行う。
これは、「==」演算子がオーバーライドされているためである。

まとめ

・int型は、「==」、「equals」どちらも同値性を検証する。
・オブジェクト型(string以外)は「==」が同一性、「equals」が同値性を検証する。
・オブジェクト型(string型)は、「==」、「equals」どちらも同値性を検証する。

広告

カテゴリー: IT, プログラミング
タグ   :

オススメ記事


  • follow us in feedly
PAGE TOP ↑