Иллюстрированный самоучитель по Architecture .NET

Использование методов класса object (Объект) в классе Customer (Клиент)

Для иллюстрации описанных методов рассмотрим класс Customer (Клиент) до и после перегрузки методов Equals (Равняется), ToString и GetHashCode.

Стандартные методы класса object (Объект)

Если не произвести подмены виртуальных методов объекта Object (Объект), наш класс будет наследовать стандартное поведение. Это поведение продемонстрировано в CustomsrObjectXStepl.

//Customer.срр
#using <mscorlib.dll>
using namespace System;
// использование пространства имен Система;
#include "Customer.h"
//Customer.h
_gc class Customer // сборщик мусора – класс Клиент
{
public:
int nCustomerld;
String *pFirstName;
String *pLastName;
String *pEmailAddress;
Customer(int id. String *pFirst, // Клиент (int идентификатор,
// Строка *pFirst, String *pLast, String *eMail)
{
nCustomerld = id; // идентификатор
pFirstName = pFirst;
pLastName = pLast;
pEmailAddress = eMail; // электронная почта
}
};
//TestCustomer.срр
ftusing <mscorlib.dll>
using namespace System;
// использование пространства имен Система;
#include "Customer.h"
#include "TestCustomer.h"
void main(void)
{
TestCustomer::Main(); // Главный }
//TestCustomer.h
_gc class TestCustomer
// класс сборщика мусора TestCustomer
{
public:
static void Main() // статическая Главная
{
Customer *pCustl, *pCust2; // Клиент
pCustl = new Customer (// новый Клиент
99, "John", "Doe", "john@rocky.com"); // "Джон", "Доу"
pCust2 = new Customer(// новый Клиент
99, "John", "Doe", "john@rocky.com"); // "Джон", "Доу"
ShowCustomerObject("pCustl", pCustl);
ShowCustomerObject("pCust2", pCust2);
CompareCustomerObjects(pCustl, pCust2);
}
private: // частный
static void ShowCustomerObject(String *pLabel, Customer *pCust)
{
Console::WriteLine("– {0} – ", pLabel);
Console::WriteLine(
"ToStringO = {0}", pCust › ToString());
Console::WriteLine(
"GetHashCodeO = {0}", _box(pCust › GetHashCode()));
Console::WriteLine(
"GetTypeO = {0}", pCust › GetType ());
}
static void CompareCustomerObjects(Customer *pCustl, Customer *pCust2) // Клиенты
{
Console::WriteLine(
"Equals() = {0}", // Равняется
_box(pCustl › Equals(// Равняется
dynamic_cast<0b]ect _gc *>(pCust2)))); // сборщик
// мусора
}
};
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.