সি # তে এমন কোনও সংগ্রহ রয়েছে যা আপনাকে এতে নকল আইটেম যুক্ত করতে দেবে না? উদাহরণস্বরূপ, এর নির্বোধ ক্লাস সহ
public class Customer {
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public override int GetHashCode() {
return (FirstName + LastName + Address).GetHashCode();
}
public override bool Equals(object obj) {
Customer C = obj as Customer;
return C != null && String.Equals(this.FirstName, C.FirstName) && String.Equals(this.LastName, C.LastName) && String.Equals(this.Address, C.Address);
}
}
নিম্নলিখিত কোডটি (স্পষ্টতই) একটি ব্যতিক্রম ছুঁড়ে ফেলবে:
Customer Adam = new Customer { Address = "A", FirstName = "Adam", LastName = "" };
Customer AdamDup = new Customer { Address = "A", FirstName = "Adam", LastName = "" };
Dictionary<Customer, bool> CustomerHash = new Dictionary<Customer, bool>();
CustomerHash.Add(Adam, true);
CustomerHash.Add(AdamDup, true);
তবে কি এমন কোনও শ্রেণি রয়েছে যা একইভাবে স্বতন্ত্রতার গ্যারান্টি দিবে, তবে কীভ্যালিউপায়ারগুলি ছাড়াই? আমি ভেবেছিলাম এটি HashSet<T>
করবে, তবে ডকগুলি পড়ে মনে হচ্ছে শ্রেণিটি কেবল একটি সেট বাস্তবায়ন ( চিত্র দেখুন )।
HashSet<T>
অপর্যাপ্ত কেন আপনি আরও ব্যাখ্যা করতে পারেন ?
Dictionary<K,V>
বর্গ নয় অর্ডার যে কোন ধরণের গ্যারান্টি।
HashSet<T>.Add
পদ্ধতি থেকে ফিরে আসা মূল্য মূল্য পরীক্ষা করুন এবং কখন নিক্ষেপ করুন false
...
HashSet<T>
। এমএসডিএন বলছে "হ্যাশসেট <টি> শ্রেণি উচ্চ-সম্পাদন সেট ক্রিয়াকলাপ সরবরাহ করে A