Dartのidentical

identicalを用いて、参照の等価性を評価することができます。identicalはdart:coreに含まれています。

bool identical(
  Object a,
  Object b
)

以下の例では、2つの変数の参照が等しいため、identicalはtrueを返します。

Dog dog = Dog(name: 'pochi');

bool result = identical(dog, dog);
print(result); // => true

以下の例では、2つの変数の参照が異なるため、identicalはfalseを返します。

Dog dog = Dog(name: 'pochi');
Cat cat = Cat(name: 'tama');

bool result = identical(dog, cat);
print(result); // => false

変数が異なっても、参照が等価であればidenticalはtrueを返します。

Dog dog1 = Dog(name: 'pochi');
Dog dog2 = dog1;

bool result = identical(dog1, dog2);
print(result); // => true

identicalが返すbool値は、==の結果とは異なります(以下の例では==オペレーターをoverrideしてnameが等しければ==がtrueを返すようにしています)。

Dog dog1 = Dog(name: 'pochi');
Dog dog2 = Dog(name: 'pochi');

bool result = identical(dog1, dog2);
print(result); // => false
print(dog1 == dog2); // => true

Reference

  1. identical function - dart:core library - Dart API

筆者

茨城県つくば市在住のソフトウェアエンジニアです。得意領域はAndroidとFlutterです。「Jetpack ComposeによるAndroid MVVMアーキテクチャ入門」の著者です。

👉もっと詳しく