using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Crystal_Message
{
class Person
{
private string firstName ="";
private string lastName= "";
private string phone="";
public Person(string firstName, string lastName, string phone)
{
this.FirstName = firstName;
this.LastName = lastName;
this.PhoneNumber = phone;
}
public string FirstName
{
get { return firstName; }
private set
{
if (string.IsNullOrWhiteSpace(value)){
throw new ArgumentNullException("Must Include First Name");
}
this.firstName = value;
}
}
public string LastName
{
get { return lastName; }
private set
{
if (string.IsNullOrWhiteSpace(value)){
throw new ArgumentNullException("Must Include Last Name");
}
this.lastName = value;
}
}
public string PhoneNumber
{
get { return phone; }
private set
{
if (string.IsNullOrWhiteSpace(value)){
throw new ArgumentNullException("Must Include Phone Number");
}
this.phone = value;
}
}
public override string ToString()
{
return "First Name: " + this.FirstName + " " + " Last Name: " + this.LastName + " " + " Phone Number: " + this.PhoneNumber;
}
public override bool Equals(object obj)
{
if(obj == null)
{
return false;
}
Person testEquals = obj as Person;
if((System.Object)testEquals == null)
{
return false;
}
return (this.firstName == testEquals.firstName) && (this.lastName == testEquals.lastName) && (this.phone == testEquals.phone);
}
/*
public override int GetHashCode()
{
return
}
*/
}
}
Я руководствовался рекомендациями MSDN. Два вопроса:C# Внедрение метода Equals правильно и как реализовать метод GetHashCode
- Правильно ли я использовал метод equals?
- Может ли кто-нибудь показать мне, как реализовать GetHashCode Правильно для моего класса? MSDN делает x^y, но я не могу сделать это для своего.
Уверенный, что вы можете использовать XOR, использовать его в хеш-коде членов. Вам не нужно, это не обязательно, просто верните phone.GetHashCode(). Это хорошо работает, потому что у каждого есть уникальный номер телефона. –
Спасибо, как насчет метода equals, каких-либо улучшений, или я его правильно реализовал? Это может стать проблемой, потому что два человека могут иметь одинаковое число, жить в одном доме. –
@HansPassant Не у каждого есть уникальный номер телефона. Некоторые люди могут выбрать не вводить свой номер телефона, даже если у них есть, другие могут использовать телефонный номер (корпоративный или семейный телефон). – hvd