Junior — Middle
Оё имкон дорад арзёбии консептуалӣ ва муқоиса кардани ҳар кадом объект дар забони C#?
sobes.tech AI
Ҷавоб аз AI
Дар C# дар назария имкон дорад, ки ҳар кадом объектро муқоиса кард, аммо усул ва маънои муқоиса аз навъи объектҳо ва интерфейсҳои татбиқшуда вобаста аст.
Барои муқоиса кардани объектҳо одатан истифода мешаванд:
- Метод
Equals(object obj)— ки дар синфи асосииobjectмуайян шудааст. Ба таври пешфарз, он ишораҳоро муқоиса мекунад, аммо метавонад барои муқоиса ба қимат нависад. - Интерфейси
IComparableваIComparable<T>— имкон медиҳад, ки тартиб байни объектҳо муайян карда шавад (масалан, барои сортинг). - Операторҳои
==ва!=— метавонанд барои намудҳои фармоишӣ барномарезӣ шаванд.
Агар объектҳо ягон муқоиса татбиқ накарда бошанд, муқоиса ба ишораҳо сурат мегирад (яъне, танҳо агар ба як объект ишора кунанд, баробар ҳисоб мешаванд).
Масалан барои татбиқи муқоиса ба қимат:
class Person : IEquatable<Person>, IComparable<Person>
{
public string Name { get; set; }
public int Age { get; set; }
public bool Equals(Person other) => other != null && Name == other.Name && Age == other.Age;
public override bool Equals(object obj) => Equals(obj as Person);
public override int GetHashCode() => HashCode.Combine(Name, Age);
public int CompareTo(Person other)
{
if (other == null) return 1;
int nameComparison = string.Compare(Name, other.Name, StringComparison.Ordinal);
if (nameComparison != 0) return nameComparison;
return Age.CompareTo(other.Age);
}
}
Дар натиҷа, дар назария, муқоиса имкон дорад, аммо барои муқоисаи дуруст ва маънӣ, объектҳо бояд методҳо ё интерфейсҳои дахлдорро татбиқ кунанд.