ใน C # ฉันเริ่มเห็นวิธีการมายากลเหล่านี้ทั้งหมดโผล่ขึ้นมาโดยไม่ต้องสำรองข้อมูลโดยอินเทอร์เฟซ ทำไมถึงถูกเลือก?
ให้ฉันอธิบาย
ก่อนหน้านี้ใน C # หากวัตถุใช้IEnumerableอินเตอร์เฟสมันจะforeachวนซ้ำโดยอัตโนมัติ นั่นทำให้รู้สึกถึงฉันเนื่องจากมีการสำรองข้อมูลโดยอินเทอร์เฟซและถ้าฉันต้องมีIteratorฟังก์ชันของตัวเองในชั้นเรียนที่ถูกทำซ้ำฉันสามารถทำได้โดยไม่ต้องกังวลว่ามันจะมีความหมายอย่างอื่นอย่างน่าอัศจรรย์
เห็นได้ชัดว่าตอนนี้ (ไม่แน่ใจว่าเมื่อใด) อินเตอร์เฟสเหล่านี้ไม่จำเป็นอีกต่อไป เพียงแค่ต้องมีการแปลงชื่อที่ถูกต้อง
อีกตัวอย่างหนึ่งคือการทำให้ awaitable วัตถุใด ๆ โดยมีวิธีการตั้งชื่อตรง GetAwaiterที่มีคุณสมบัติเฉพาะไม่กี่
ทำไมไม่สร้างอินเทอร์เฟซอย่างที่พวกเขาทำกับIEnumerableหรือINotifyPropertyChangedสำรอง "เวทย์มนตร์" นี้ขึ้นมาแบบคงที่?
รายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่ฉันหมายถึงที่นี่:
http://blog.nem.ec/2014/01/01/magic-methods-c-sharp/
อะไรคือข้อดีและข้อเสียของวิธีการเวทย์มนตร์และมีที่ไหนออนไลน์ที่ฉันสามารถหาอะไรเกี่ยวกับสาเหตุการตัดสินใจเหล่านี้?
async/ awaitแล้วนั่นจะใช้ได้กับโค้ดที่เขียนหลังจาก. NET 4.5 กลายเป็นที่แพร่หลายมากพอที่จะเป็นเป้าหมายที่ทำงานได้…ซึ่งโดยทั่วไปแล้วในตอนนี้ แต่การแปลวากยสัมพันธ์อย่างหมดจดเป็นการเรียกเมธอดทำให้ฉันสามารถเพิ่มawaitฟังก์ชันการทำงานให้กับประเภทที่มีอยู่หลังจากข้อเท็จจริง
foreachวนลูปในตอนแรก มีไม่เคยได้รับความต้องการสำหรับวัตถุที่จะใช้IEnumerableสำหรับforeachการทำงาน เป็นเพียงการประชุมที่จะทำเช่นนั้น