কিছু লিগ্যাসি কোডে আমি একটি নতুন কী-মান আইটেম যুক্ত করতে বা মানটি আপডেট করার সুবিধার্থে নীচের এক্সটেনশন পদ্ধতিটি দেখেছি, যদি কীটি ইতিমধ্যে বিদ্যমান থাকে।
পদ্ধতি -১ (উত্তরাধিকারের কোড)।
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
if (map.ContainsKey(key))
{
map[key] = value;
}
else
{
map.Add(key, value);
}
}
যদিও, আমি যাচাই করেছি যে map[key]=value
ঠিক একই কাজ করে। অর্থাত, এই পদ্ধতিটি নীচের পদ্ধতি -2 দিয়ে প্রতিস্থাপন করা যেতে পারে।
পদ্ধতি-2।
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
map[key] = value;
}
এখন, আমার প্রশ্ন .. আমি যদি পদ্ধতি -২ দ্বারা পদ্ধতি -১ প্রতিস্থাপন করি তবে কোনও সমস্যা হতে পারে? এটি কোনও সম্ভাব্য দৃশ্যে ভেঙে যাবে?
এছাড়াও, আমি মনে করি এটি হ্যাশ টেবিল এবং অভিধানের মধ্যে পার্থক্য ছিল। হ্যাশ টেবিল কোনও আইটেম আপডেট করতে, বা অভিধান না করে সূচক ব্যবহার করে একটি নতুন আইটেম যুক্ত করার অনুমতি দেয় !! এই পার্থক্যটি কি সি #> 3.0 সংস্করণে মুছে ফেলা হয়েছে?
ব্যবহারকারী যদি একই কী-মানটি আবার প্রেরণ করে তবে এই পদ্ধতির উদ্দেশ্যটি খুব বেশি ব্যতিক্রম নয়, পদ্ধতিটি কেবল নতুন মান সহ এন্ট্রি আপডেট করতে হবে এবং যদি নতুন কী-মান জোড় পদ্ধতিতে প্রেরণ করা হয়েছে তবে একটি নতুন এন্ট্রি করা উচিত ।