คำถามติดแท็ก yield-return

16
การใช้ 'ผลตอบแทนคืน' อย่างเหมาะสม
Наэтотвопросестьответына Stack Overflow нарусском : Вчемпользаผลผลิต? ผลผลิตคำหลักเป็นหนึ่งในบรรดาคำหลักใน C # ที่ยังคงทำให้ประหลาดใจฉันและฉันไม่เคยได้รับความมั่นใจว่าฉันใช้มันอย่างถูกต้อง ของโค้ดสองชิ้นต่อไปนี้ซึ่งเป็นที่ต้องการและทำไม เวอร์ชัน 1:การใช้การคืนผลตอบแทน public static IEnumerable<Product> GetAllProducts() { using (AdventureWorksEntities db = new AdventureWorksEntities()) { var products = from product in db.Product select product; foreach (Product product in products) { yield return product; } } } เวอร์ชัน 2:ส่งคืนรายการ public static …
903 c#  yield-return 

6
คืน enumerables ทั้งหมดพร้อมผลตอบแทนในทันที โดยไม่ต้องวนซ้ำผ่าน
ฉันมีฟังก์ชั่นต่อไปนี้เพื่อรับข้อผิดพลาดในการตรวจสอบความถูกต้องของการ์ด คำถามของฉันเกี่ยวข้องกับการจัดการกับ GetErrors IEnumerable<ErrorInfo>ทั้งสองวิธีมีผลตอบแทนประเภทเดียวกัน private static IEnumerable<ErrorInfo> GetErrors(Card card) { var errors = GetMoreErrors(card); foreach (var e in errors) yield return e; // further yield returns for more validation errors } เป็นไปได้ไหมที่จะส่งคืนข้อผิดพลาดทั้งหมดGetMoreErrorsโดยไม่ต้องแจงผ่านพวกเขา คิดเกี่ยวกับมันอาจเป็นคำถามที่โง่ แต่ฉันต้องการให้แน่ใจว่าฉันจะไม่ผิด

6
มี Java เทียบเท่ากับคีย์เวิร์ด 'yield' ของ C # หรือไม่?
ฉันรู้ว่าไม่มีการเทียบเท่าโดยตรงใน Java แต่อาจเป็นของบุคคลที่สาม? มันสะดวกมาก ตอนนี้ฉันต้องการใช้ตัววนซ้ำที่ให้โหนดทั้งหมดในทรีซึ่งเป็นโค้ดประมาณห้าบรรทัดพร้อมผลตอบแทน
112 java  yield  yield-return 

5
ใน C # เหตุใดวิธีการที่ไม่ระบุชื่อจึงไม่มีคำสั่งผลตอบแทน
ฉันคิดว่ามันจะดีถ้าทำอะไรแบบนี้ (โดยที่แลมด้าให้ผลตอบแทน): public IList<T> Find<T>(Expression<Func<T, bool>> expression) where T : class, new() { IList<T> list = GetList<T>(); var fun = expression.Compile(); var items = () => { foreach (var item in list) if (fun.Invoke(item)) yield return item; // This is not allowed by C# } return items.ToList(); } อย่างไรก็ตามฉันพบว่าฉันไม่สามารถใช้ผลตอบแทนในวิธีที่ไม่ระบุตัวตนได้ ฉันสงสัยว่าทำไม …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.