2010-06-06 10 views
11

में जोड़ती है क्या सी # में आईसीओलेक्शन में कुछ विधि है जो किसी अन्य संग्रह के सभी तत्व जोड़ती है? अभी मैं हमेशा इस बात के लिए foreach चक्र लिखने के लिए है:सी # में आईसीओलेक्शन में विधि जो अन्य आईसीओलेक्शन के सभी तत्वों को

ICollection<Letter> allLetters = ... //some initalization 
ICollection<Letter> justWrittenLetters = ... //some initalization 
... //some code, adding to elements to those ICollections 

foreach(Letter newLetter in justWrittenLetters){ 
    allLetters.add(newLetter); 
} 

मेरा प्रश्न है, वहाँ विधि है कि उस चक्र की जगह ले सकता है? उदाहरण के लिए जावा में विधि addAll(Collection c) विधि? तो मैं केवल कुछ लिखूंगा जैसे:

allLetters.addAll(justWrittenLetters); 

उत्तर

18

आईसीओलेक्शन के लिए ऐसा कोई तरीका नहीं है। आपके पास दो विकल्प हैं, या तो एक अलग प्रकार का उपयोग करें जैसे कि सूची जिसमें AddRange() विधि है या वैकल्पिक रूप से, एक एक्सटेंशन विधि बनाएं:

public static class CollectionExtensions 
{ 
    public static void AddRange<T>(this ICollection<T> collection, IEnumerable<T> newItems) 
    { 
     foreach (T item in newItems) 
     { 
      collection.Add(item); 
     } 
    } 
} 
संबंधित मुद्दे