এটি অগত্যা গুরুত্বপূর্ণ নয়; এটি আপনার সংগ্রহগুলির আকার এবং আপনার পারফরম্যান্স প্রয়োজনীয়তার উপর নির্ভর করে এবং আপনার ক্লাসটি এমন কোনও লাইব্রেরিতে ব্যবহার করা হবে যেখানে আপনি পারফরম্যান্সের প্রয়োজনীয়তাগুলি জানেন না। আমি প্রায়শই জানি আমার সংগ্রহের আকারগুলি খুব বেশি বড় নয় এবং একটি সঠিক হ্যাশ কোড তৈরি করে আমার কয়েকটি মাইক্রোসেকেন্ডের পারফরম্যান্সের চেয়ে মূল্যবান; সুতরাং (সংকলক দ্বারা বিরক্তিকর সতর্কতা পরিত্রাণ পেতে) আমি সহজভাবে ব্যবহার:
public override int GetHashCode()
{
return base.GetHashCode();
}
(অবশ্যই আমি সতর্কতাটি বন্ধ করতে একটি # প্রচারণা ব্যবহার করতে পারি তবে আমি এইভাবে পছন্দ করি))
আপনি যে আপনি যখন অবস্থানে আছে কি বিষয় অন্যদের দ্বারা উল্লিখিত সব চেয়ে কর্মক্ষমতা প্রয়োজন এখানে অবশ্যই প্রযোজ্য। সর্বাধিক গুরুত্বপূর্ণ - অন্যথায় আপনি হ্যাশ সেট বা অভিধান থেকে আইটেমগুলি পুনরুদ্ধার করার সময় ভুল ফলাফল পেয়ে যাবেন: হ্যাশ কোডটি কোনও সামগ্রীর আয়ু সময়ের সাথে পৃথক হওয়া উচিত নয় (আরও সঠিকভাবে, যখনই হ্যাশ কোডের প্রয়োজন হয়, যেমন চলাকালীন অভিধানে একটি কী): উদাহরণস্বরূপ, নিম্নলিখিতটি ভ্যালু হিসাবে প্রকাশিত হওয়ায় এটি ভুল এবং উদাহরণের জীবনকালীন সময়ে শ্রেণিতে বাহ্যিকভাবে পরিবর্তিত হতে পারে, সুতরাং আপনাকে অবশ্যই এটি হ্যাশ কোডের ভিত্তি হিসাবে ব্যবহার করবেন না:
class A
{
public int Value;
public override int GetHashCode()
{
return Value.GetHashCode(); //WRONG! Value is not constant during the instance's life time
}
}
অন্যদিকে, যদি মান পরিবর্তন করা যায় না তবে এটি ব্যবহার করা ঠিক হবে:
class A
{
public readonly int Value;
public override int GetHashCode()
{
return Value.GetHashCode(); //OK Value is read-only and can't be changed during the instance's life time
}
}