हम एक ही विधि में रिटर्न और उपज रिटर्न दोनों का उपयोग क्यों नहीं कर सकते?एक ही विधि में "वापसी" और "उपज रिटर्न" का उपयोग क्यों नहीं किया जा सकता है?
उदाहरण के लिए, हम GetIntegers1 और GetIntegers2 नीचे प्राप्त कर सकते हैं, लेकिन GetIntegers3 नहीं।
public IEnumerable<int> GetIntegers1()
{
return new[] { 4, 5, 6 };
}
public IEnumerable<int> GetIntegers2()
{
yield return 1;
yield return 2;
yield return 3;
}
public IEnumerable<int> GetIntegers3()
{
if (someCondition)
{
return new[] {4, 5, 6}; // compiler error
}
else
{
yield return 1;
yield return 2;
yield return 3;
}
}
एक सेकंड प्रतीक्षा करें, जोन स्कीट अब आ जाएगा। – Juvanis
मैं इसे जोड़ दूंगा यदि आपको वास्तव में इसकी आवश्यकता है, तो आप एक GetIngegers4 बना सकते हैं जो किसी शर्त के आधार पर GetIntegers1 या GetIntegers2 को कॉल करता है। – xanatos
यह शायद स्पष्ट है, लेकिन ऐसे मामलों में आप हमेशा अपने संग्रह को अनलॉक कर सकते हैं और उपज आइटम वापस कर सकते हैं: foreach (नया आइटम [] {4,5,6}) उपज वापसी आइटम; – Foo42