उपयोग बजाय HashSet की RemoveWhere विधि:
hashset.RemoveWhere(s => s == "somestring");
आप को पैरामीटर के रूप में एक शर्त/विधेय निर्दिष्ट प्रक्रिया। भविष्यवाणी से मेल खाने वाले हैशसेट में कोई भी आइटम हटा दिया जाएगा।
यह हैशसेट को संशोधित करने की समस्या से बचाता है, जबकि इसे फिर से चालू किया जा रहा है।
अपनी टिप्पणी के जवाब में:
'एस' वर्तमान आइटम का प्रतिनिधित्व करता है HashSet के भीतर से मूल्यांकन किया जा रहा।
hashset.RemoveWhere(delegate(string s) {return s == "somestring";});
या:
hashset.RemoveWhere(ShouldRemove);
public bool ShouldRemove(string s)
{
return s == "somestring";
}
संपादित करें: कुछ सिर्फ मेरे लिए हो गई है: के बाद से HashSet एक सेट है कि कोई भी शामिल
ऊपर कोड के बराबर है डुप्लिकेट मान, बस hashset.Remove("somestring")
पर कॉल करना पर्याप्त होगा। लूप में ऐसा करने की कोई आवश्यकता नहीं है क्योंकि कभी भी एक मैच से अधिक नहीं होगा।
धन्यवाद क्या प्रतिनिधित्व करेगा? – aHunter
'हैशसेट के मूल्यांकन से वर्तमान आइटम का प्रतिनिधित्व करता है। अद्यतन उत्तर देखें। – adrianbanks