Trong C++, giả sử mình có class Node được định nghĩa như sau:
class Node
{
public:
Node(int data, const char& pName)
{
this->data = data;
memcpy(name, pName, 20);
}
int data;
char name[20];
}
Mình sẽ tạo ra 4 node và bỏ vào một cái array.
{
Node* array[4];
array[0] = new Node(0, “Banana”);
array[1] = new Node(10, “Mango”);
array[2] = new Node(20, “Durian”);
array[3] = new Node(10, “Mango”);
}
array[1] và array[3] là 2 object có các trường giống nhau nhưng là 2 cái riêng biệt chỉ đến 2 vùng nhớ riêng biệt.
Mình có 1 cái method như sau:
public void deleteNode(Node* pNode);
Bây giờ nếu mình muốn xóa cái array[3] thì cách tốt nhất là dùng địa chỉ chứ nếu xóa bằng cách loop qua cái array rồi xem node nào mà có các trường có cùng giá trị với node truyền vào thì chắc chắn array[1] sẽ bị xóa chứ không phải array[3].
Bây giờ có cách nào để làm điều tương tự trong C# hay không? Cách duy nhất mình nghĩ đến là so sánh giá trị hashcode. Mình có coi qua Object.ReferenceEquals() nhưng nó chỉ so sánh các trường rồi kết luận là 2 cái object bằng nhau thôi.