@ avance70। वास्तव में मूल प्रश्न का उत्तर नहीं है, लेकिन केवल 1 पूर्णांक मान के साथ एक आईनेमरेबल के बारे में avance70 के प्रश्न का उत्तर। इसे एक टिप्पणी के रूप में जोड़ा होगा, लेकिन मेरे पास कोई टिप्पणी जोड़ने के लिए पर्याप्त प्रतिनिधि नहीं है। यदि आप एक सख्ती से अपरिवर्तनीय अनुक्रम में रुचि रखते हैं, तो आप विकल्पों में से एक जोड़ी है:
जेनेरिक विस्तार विधि:
public static IEnumerable<T> ToEnumerable<T>(this T item)
{
yield return item;
}
उपयोग इस तरह:
foreach (int i in 10.ToEnumerable())
{
Debug.WriteLine(i); //Will print "10" to output window
}
या इस:
int x = 10;
foreach (int i in x.ToEnumerable())
{
Debug.WriteLine(i); //Will print value of i to output window
}
या इस:
int start = 0;
int end = 100;
IEnumerable<int> seq = GetRandomNumbersBetweenOneAndNinetyNineInclusive();
foreach (int i in start.ToEnumerable().Concat(seq).Concat(end.ToEnumerable()))
{
//Do something with the random numbers, bookended by 0 and 100
}
मुझे हाल ही में उपरोक्त प्रारंभ/समाप्ति उदाहरण जैसा मामला था जहां मुझे अनुक्रम से लगातार मूल्य निकालना था (छोड़ें और टेक का उपयोग करके) और फिर प्रारंभ और अंत मूल्यों को प्रीपेन्ड और संलग्न करें। आरंभ और अंत मान पिछले नहीं-निकाले मूल्य और पहले निकाले मूल्य (शुरू करने के लिए) के बीच है और पिछले निकाले मूल्य और पहली गैर निकाले मूल्य (अंत के लिए) के बीच अंतर्वेशित रहे थे। परिणामस्वरूप अनुक्रम को फिर से संचालित किया गया था, संभवतः उलट रहा था।
तो, अगर मूल अनुक्रम की तरह देखा:
:
मैं 3 और 4 निकालने और 2 और 3 और 4 और 5 के बीच अंतर्वेशित मान जोड़ने के लिए हो सकता है 2,5 3 4 4,5
Enumerable.Repeat। इस तरह का उपयोग करें:
foreach (int i in Enumerable.Repeat(10,1)) //Repeat "10" 1 time.
{
DoSomethingWithIt(i);
}
बेशक
, क्योंकि ये IEnumerables रहे हैं, वे भी अन्य IEnumerable कार्यों के साथ संयोजन के रूप में इस्तेमाल किया जा सकता। सुनिश्चित नहीं है कि ये वास्तव में "अच्छे" विचार हैं या नहीं, लेकिन उन्हें नौकरी मिलनी चाहिए।
अच्छा लगा। मैंने आज कुछ सीखा है! – spender
+1। Enumerable.Empty – AlwaysAProgrammer
से अनजान था है कि मैं वास्तव में क्या देख रहा था! – avance70