जब मैं एक कोड ब्लॉककाम कर रहे पैटर्न
static void Main()
{
foreach (int i in YieldDemo.SupplyIntegers())
{
Console.WriteLine("{0} is consumed by foreach iteration", i);
}
}
class YieldDemo
{
public static IEnumerable<int> SupplyIntegers()
{
yield return 1;
yield return 2;
yield return 3;
}
}
मैं सिद्धांत उपज वापसी के पीछे व्याख्या कर सकते हैं के रूप में
- मुख्य() SupplyIntegers()
|1| |2| |3| are stored in contiguous memory block.Pointer of "IEnumerator" Moves to |1|
कॉल
- आपूर्ति इंटेगर() से मुख्य() तक नियंत्रण रिटर्न।
- मुख्य() मूल्य
- पॉइंटर मूव्स | 2 |, और इसी तरह से प्रिंट करता है।
स्पष्टीकरण:
(1) आम तौर पर हम अंदर एक function.How सी # व्यवहार करता है जब कई उपज वापसी, उपज वापसी, ... बयान मौजूद हैं एक वैध वापसी कथन अनुमति दी है होगा ?
(2) एक बार वापसी का सामना करने के बाद आपूर्तिइंटर() पर नियंत्रण के लिए फिर से कोई रास्ता नहीं है, यदि अनुमति है तो यील्ड फिर से 1 से शुरू नहीं होगा? मेरा मतलब उपज वापसी 1 है?
पुन एक किताब के बारे में पूछ: गहराई में सी # (मैनिंग, स्कीट), अध्याय 6. यह निशुल्क नमूना अध्याय है, और इसमें इटरेटर ब्लॉक शामिल हैं। यह बिल्कुल शुरुआती सी # पुस्तक नहीं है (इससे दूर), लेकिन आप इस विषय पर एक बेहतर संदर्भ खोजने के लिए संघर्ष करेंगे। –
यदि विशेषाधिकारों को यह पूछने की अनुमति है कि "क्या आपने कोई पुस्तक नहीं लिखी है?" – user193276
नहीं, मैंने नहीं किया है। मैं एक प्रकाशक के लिए कुछ प्रमाण-पढ़ता हूं, और मैं कभी-कभी अजीब लेख लिखता हूं, लेकिन मेरे द्वारा कोई पुस्तक नहीं। –