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.