IEnumerable <string> C # में प्रारंभिक


115

मेरे पास यह वस्तु है:

IEnumerable<string> m_oEnum = null;

और मैं इसे इनिशियलाइज़ करना चाहूंगा। के साथ प्रयास किया

IEnumerable<string> m_oEnum = new IEnumerable<string>() { "1", "2", "3"};

लेकिन यह कहता है "IEnumerable does not में स्ट्रिंग जोड़ने के लिए एक विधि है। कोई भी विचार? धन्यवाद

जवाबों:


181

ठीक है, उत्तर में कहा गया है कि आप भी देख रहे होंगे

IEnumerable<string> m_oEnum = Enumerable.Empty<string>();

या

IEnumerable<string> m_oEnum = new string[]{};

4
अब पुराना है, लेकिन मैं दूसरे विकल्प से बचूंगा। आप अन्य IEnumerables कि सरणियों के साथ संगत नहीं हैं के साथ बातचीत करने के लिए यह चाहते हो सकता है।
— जोएल कोएहॉर्न

92

IEnumerable<T>एक इंटरफ़ेस है। आपको एक ठोस प्रकार (जो लागू होता है IEnumerable<T>) के साथ आरंभ करने की आवश्यकता है । उदाहरण:

IEnumerable<string> m_oEnum = new List<string>() { "1", "2", "3"};


18

IEnumerable सिर्फ एक इंटरफ़ेस है और इसलिए इसे सीधे नहीं किया जा सकता है।

आपको एक ठोस वर्ग बनाने की जरूरत है (जैसे List)

IEnumerable<string> m_oEnum = new List<string>() { "1", "2", "3" };

तब आप किसी भी उम्मीद के साथ इसे पास कर सकते हैं IEnumerable।



6

आप एक इंटरफ़ेस को तुरंत नहीं कर सकते - आपको IEnumerable का एक ठोस कार्यान्वयन प्रदान करना होगा।


2

आप एक स्थिर विधि बना सकते हैं जो वांछित IEnumerable को इस तरह लौटाएगी:

public static IEnumerable<T> CreateEnumerable<T>(params T[] values) =>
    values;
//And then use it
IEnumerable<string> myStrings = CreateEnumerable("first item", "second item");//etc..

वैकल्पिक रूप से बस करो:

IEnumerable<string> myStrings = new []{ "first item", "second item"};

0

IEnumerable एक इंटरफ़ेस है, जो इंटरफ़ेस के उदाहरण को बनाने के तरीके की तलाश करने के बजाय, एक कार्यान्वयन बनाता है जो इंटरफ़ेस से मेल खाता है: एक सूची या एक सरणी बनाएं।

IEnumerable<string> myStrings = new [] { "first item", "second item" };
IEnumerable<string> myStrings = new List<string> { "first item", "second item" };
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.