Giriş
Şu satırı dahil ederiz.
Şöyle yaparız.
Bir compararer kodlarız. Şöyle yaparız.
Şöyle yaparız.
1. GetHashCode metodu
Eğer IEqualityComparer arayüzünü constructor'a vermiyorsak HashSet'e eklenen nesnenin Equasl ve GetHashCode metodu yazılmalıdır. Şöyle yaparız.
Şöyle yaparızz
Şu satırı dahil ederiz.
using System.Collections.Generic;
Constructor - CollectionŞöyle yaparız.
List<Foo> list = ...;
HashSet
set = new HashSet<Foo>(list);
Constructor - IEqualityComparerBir compararer kodlarız. Şöyle yaparız.
class PointComparer : IEqualityComparer<Point> {
public bool Equals(Point x, Point y) {
return x.X == y.X && x.Y == y.Y;
}
public int GetHashCode(Point obj) {
return obj.X << 16 | obj.Y;
}
}
Şöyle yaparızHashSet<Point> set = new HashSet<Point>(new PointComparer());
Add metoduŞöyle yaparız.
set.Add(new Foo(...));
Diğer1. GetHashCode metodu
Eğer IEqualityComparer arayüzünü constructor'a vermiyorsak HashSet'e eklenen nesnenin Equasl ve GetHashCode metodu yazılmalıdır. Şöyle yaparız.
public class Employe
{
public Employe() {
}
public string Name { get; set; }
public override string ToString() {
return Name;
}
public override bool Equals(object obj) {
return this.Name.Equals(((Employe)obj).Name);
}
public override int GetHashCode() {
return this.Name.GetHashCode();
}
}
2. Linq ile kullanımıŞöyle yaparızz
HashSet<Employe> hashSet = new HashSet<Employe>(...);
...
HashSet<Employe> hashSetB = new HashSet<Employe>(...);
...
var union = hashSet.Union<Employe>(hashSetB).ToList();
var inter = hashSet.Intersect<Employe>(hashSetB).ToList();
var except = hashSet.Except<Employe>(hashSetB).ToList();
Hiç yorum yok:
Yorum Gönder