संभव डुप्लिकेट:
Yield In VB.NETक्या मैं वीबीएनईटी में आईन्यूमेरेबल कार्यों के लिए उपज रिटर्न लागू कर सकता हूं?
सी # में, जब एक समारोह है कि एक IEnumerble<>
रिटर्न लेखन, आप yield return
yield break;
उपयोग कर सकते हैं गणना के एक आइटम लौटने के लिए और कोई शेष सूचित करने के लिए आइटम नहीं है। एक ही काम करने के लिए वीबी.नेट वाक्यविन्यास क्या है?
NerdDinner कोड से एक उदाहरण:
public IEnumerable<RuleViolation> GetRuleViolations() {
if (String.IsNullOrEmpty(Title))
yield return new RuleViolation("Title required","Title");
if (String.IsNullOrEmpty(Description))
yield return new RuleViolation("Description required","Description");
if (String.IsNullOrEmpty(HostedBy))
yield return new RuleViolation("HostedBy required", "HostedBy");
if (String.IsNullOrEmpty(Address))
yield return new RuleViolation("Address required", "Address");
if (String.IsNullOrEmpty(Country))
yield return new RuleViolation("Country required", "Country");
if (String.IsNullOrEmpty(ContactPhone))
yield return new RuleViolation("Phone# required", "ContactPhone");
if (!PhoneValidator.IsValidNumber(ContactPhone, Country))
yield return new RuleViolation("Phone# does not match country", "ContactPhone");
yield break;
}
यह convert C# to VB.NET tool देता है एक त्रुटि "YieldStatement असमर्थित है"।
नोट। इसके अलावा, आपको वहां उपज ब्रेक की आवश्यकता नहीं है।साथ ही, आप उस कोड को फुलक प्रतिनिधियों की गणना करने के लिए नियम उल्लंघन वस्तुओं की गणना करने से रोकने के बारे में सोच सकते हैं। –
yfeldblum
उपज का उपयोग करके मुझे पाइपिंग की याद दिलाती है कि कॉलिंग कोड ienumerable * से पहले पुनरावृत्ति शुरू कर सकता है * ienumerable लौटने वाला फ़ंक्शन चलाना समाप्त हो गया है। बहुत ही शांत! –
यह एक भयानक उदाहरण है, क्योंकि आपको इस तरह के कुछ के लिए उदारता की आवश्यकता नहीं है: नियम उल्लंघन का आकलन करने का क्या फायदा है? उन्हें एक सूची में भरें और इसके साथ किया जाए। यह कहना नहीं है कि यिल उपयोगी नहीं है, लेकिन यह सिर्फ एक बुरा उदाहरण है – piers7