‫และในวิดีโอนี้ เราจะดูอินเทอร์เฟซที่สำคัญบางอย่างที่คุณควรเข้าใจเมื่อคุณต้องการเป็นนักพัฒนาร้านค้าขั้นสูง
‫และนั่นคืออินเทอร์เฟซ AI enumerator เช่นเดียวกับอินเทอร์เฟซ AI enumerator
‫ดังนั้นคุณควรเข้าใจอินเทอร์เฟซก่อนที่จะดูวิดีโอนี้ เพราะไม่เช่นนั้น แนวคิดบางอย่างอาจไม่สมเหตุสมผลสำหรับคุณ
‫เลยแนะนำให้ลองดูว่าอินเทอร์เฟสวิดีโอที่เรานำเสนอนั้นด้วย
‫ตกลง.
‫ดังนั้นอินเทอร์เฟซ AI ที่นับได้จึงเป็นอินเทอร์เฟซพื้นฐานสำหรับคอลเล็กชันจำนวนมากใน C sharp และหน้าที่ของมันคือการจัดหาวิธีการวนซ้ำผ่านคอลเล็กชัน
‫นี่คือเหตุผลที่เราสามารถใช้แต่ละลูปเพื่อผ่านรายการหรือพจนานุกรมได้ เนื่องจากพวกมันสืบทอดมาจากอินเทอร์เฟซที่นับได้
‫ดังนั้นอินเทอร์เฟซที่นับได้เป็นภาษาอังกฤษง่าย ๆ เมื่อคลาสคอลเลกชันใช้อินเทอร์เฟซที่นับได้ของ
‫AI จะสามารถนับได้และเราสามารถนับแต่ละองค์ประกอบในแต่ละรายการได้
‫อินเทอร์เฟซ AI ที่นับได้มีสองเวอร์ชันที่แตกต่างกัน
‫หนึ่งคือใช้งานได้กับคอลเล็กชันทั่วไปที่คุณมีวงเล็บเปิดที่นับได้ของ AI วงเล็บปิดและอินเทอร์เฟซ
‫AI ที่นับได้สำหรับคอลเล็กชันที่ไม่ใช่แบบทั่วไป
‫ดังนั้นคุณควรเข้าใจว่าคอลเล็กชันแบบทั่วไปและแบบทั่วไปคืออะไรเช่นกัน
‫พวกเขามีข้อดีและข้อเสียบางอย่าง แต่ฉันมีวิดีโอสำหรับสิ่งนั้นเช่นกัน
‫ฉันหวังว่าคุณจะดูมันก่อนที่จะดูวิดีโอนี้ เพราะไม่อย่างนั้นมันจะซับซ้อนเล็กน้อย
‫ตกลง.
‫สองตัวนี้ที่เรามีตรงนี้ ลองดูกัน
‫เนื่องจากคอลเลกชันทั่วไปถูกนำมาใช้หลังจากคอลเลกชันที่ไม่ใช่แบบทั่วไป จึงแนะนำให้ใช้คอลเลกชันทั่วไป
‫ดังนั้นโดยพื้นฐานแล้วพวกเขาจึงเป็นรุ่นที่ปรับปรุงแล้ว
‫ดังนั้น หากคุณกำลังสร้างโปรเจ็กต์ใหม่ ขอแนะนำให้ใช้เวอร์ชันทั่วไป เนื่องจาก I enumerable สำหรับคอลเล็กชันที่ไม่ใช่แบบทั่วไปจำเป็นต้องใช้หรือดำเนินการ
‫boxing และ unboxing ซึ่งโดยพื้นฐานแล้วจะเป็นการแปลงประเภทของอ็อบเจ็กต์
‫และในภายหลังเราจะอธิบายวิธีใช้อินเทอร์เฟซ tty ที่นับได้ของ AI
‫ดังนั้นอินเทอร์เฟซคอลเลกชันทั่วไป เราจะไม่พูดถึงอินเทอร์เฟซคอลเลกชันที่ไม่ใช่แบบทั่วไป เนื่องจากไม่แนะนำให้ใช้เนื่องจากการชกมวยและการแกะกล่อง
‫ซึ่งมีประสิทธิภาพน้อยกว่า
‫ทีนี้มาดูความแตกต่างระหว่างการแจงนับ AI และตัวแจงนับ AI
‫คุณอาจเคยได้ยินมาก่อน
‫ดังนั้นอินเทอร์เฟซ AI ที่นับได้มีวิธีการเดียวที่คุณต้องนำไปใช้เมื่อใช้งานอินเทอร์เฟซนี้
‫และเราจะทำในภายหลังในตัวอย่างเฉพาะของเราที่นี่
‫ดังนั้นจึงทำให้รู้สึกมากขึ้น
‫ดังนั้นเมธอด get enumerate คือวิธีที่คุณต้องนำไปใช้และส่งคืนอ็อบเจ็กต์ AI enumerator
‫ดังนั้นวิธีนี้ที่คุณต้องนำไปใช้เมื่อคุณต้องการใช้ AI enumerable สำหรับคลาสของคุณหรือสิ่งที่คุณต้องการนำไปใช้กับคลาสของคุณ
‫คุณต้องมีเมธอด get enumerator ซึ่งจะส่งคืน AI enumerator
‫ดังนั้นการแจงนับ AI
‫ให้ความสามารถในการย้ำผ่านคอลเลกชันโดยเปิดเผยคุณสมบัติปัจจุบันที่ชี้ไปที่วัตถุที่เราอยู่ในคอลเลกชัน
‫สิ่งนี้ซับซ้อนกว่าที่จะเกิดขึ้นเมื่อเราเรียกใช้สิ่งนี้จริงในตัวอย่างของเรา
‫เราจะสร้างตัวอย่างที่เข้าใจความหมายทั้งหมดนี้อย่างถ่องแท้
‫นี่เป็นเพียงการเตรียมสิ่งที่คุณคาดหวัง
‫เอาล่ะเรามาเริ่มกันเลย
‫ในที่สุดก็หลุดพ้นจากทฤษฎีทั้งหมดนี้แล้ว มาดูในทางปฏิบัติกัน
‫เรามาสร้างคลาสเล็กๆ ที่เรียกว่า dog กันเถอะ
‫และฉันจะใส่มันในไฟล์เดียวกันเพื่อให้ทุกอย่างง่ายขึ้น
‫ดังนั้นเราจึงมีคลาสนี้ชื่อ Dog ด้วยชื่อ และเรามีบูลีนที่เรียกว่าเป็น Naughty Dog
‫ดังนั้นโดยทั่วไปเราจะตรวจสอบว่าสุนัขซนหรือไม่
‫และตามนั้น เราจะให้ขนมเขา
‫ดังนั้นหากเขาไม่ใช่สุนัขซุกซน เขาจะได้รับการปฏิบัติน้อยกว่าการเป็นเด็กดีหรือสุนัขที่ดี
‫โดยพื้นฐานแล้ว ตัวสร้างที่นี่ก็แค่ตั้งค่าสองค่านั้น
‫ดังนั้นเมื่อเราสร้างวัตถุสุนัข เราจะตั้งชื่อและบูลีนให้กับมัน ไม่ว่าสุนัขนั้นจะซนหรือไม่ก็ตาม
‫แล้วเราก็มีวิธีรักษาของขวัญนี้ และโดยพื้นฐานแล้วจะพิมพ์ว่า Woof ที่สุนัขพูดว่า
‫ดังนั้นสำหรับทุกๆ มื้อที่สุนัขได้รับ เขาจะพูดว่า Woof
‫โดยพื้นฐานแล้ว ถ้าเขาเป็นสุนัขที่ดี คุณจะได้รับขนมสองอย่าง และเขาจะเคลื่อนไหวสองครั้ง
‫และหากเขาเป็นสุนัขเลวหรือสุนัขซุกซน เขาจะย้ายเพียงครั้งเดียวเพราะจะได้ขนมน้อยลง
‫ตกลง.
‫ตอนนี้เรามีท่าเทียบเรือระดับนี้แล้ว และตอนนี้เราสามารถดำเนินการสร้างสิ่งของสำหรับสุนัขได้แล้ว
‫เลยจัดคลาสอื่นกัน
‫สมมติว่าเรามีคลาสอื่นที่จะใช้ dog ในรายการ
‫ดังนั้นเราจึงมีชั้นเรียนพักพิงสำหรับสุนัขนี้
‫ดังนั้นชั้นพักสุนัขนี้จะมีรายชื่อสุนัข
‫ดังนั้นเราจึงจำเป็นต้องตรวจสอบให้แน่ใจว่าเรามีสิ่งนี้โดยใช้คอลเล็กชันระบบทั่วไป เนื่องจากรายการเป็นคอลเล็กชันทั่วไป
‫ดังนั้นที่ด้านบนนี้ คุณจะเห็นว่าตอนนี้คุณมีสิ่งนี้โดยใช้คอลเล็กชันระบบทั่วไป
‫ตกลง.
‫ตอนนี้เรามีที่พักพิงสำหรับสุนัขแล้ว และเรามีรายชื่อสุนัขอยู่ในผู้สร้างที่พักพิงสำหรับสุนัขนี้
‫สิ่งเดียวที่เราจะทำคือเริ่มต้นรายชื่อสุนัขตัวนี้ด้วยกลุ่มสุนัข
‫ดังนั้นเราจึงมีสุนัขแคสเปอร์หรือสุนัขชื่อแคสเปอร์
‫เขาไม่ใช่สุนัขแก่ แต่ถ้าเป็นสุนัขซน Oreo ก็ไม่ซน และ Pixel ก็ไม่ซนด้วย
‫ดังนั้นอย่าถามฉันว่าเราคิดชื่อเหล่านี้ได้อย่างไร แต่นั่นคือวิธีที่เราจะเรียกสุนัขเหล่านั้นโดยพื้นฐานแล้ว
‫แน่นอน คุณสามารถทำให้แอปพลิเคชันทั้งหมดนี้ซับซ้อนมากขึ้นได้ แต่จริงๆ แล้วความคิดของเราคือการใช้รายชื่อสุนัขนี้เพื่อวนซ้ำผ่านที่พักพิงของสุนัข
‫เพื่อผ่านที่พักพิงสำหรับสุนัข โดยพื้นฐานแล้ว
‫และขึ้นอยู่กับว่าสุนัขตัวหนึ่งดีหรือไม่หรือสุนัขซนหรือไม่ เราจะให้ขนมหนึ่งหรือสองอย่างแก่เขา
‫ทีนี้มาดูวิธีการหลักของเรากัน เพราะนั่นคือจุดเริ่มต้นของแอปพลิเคชันของเรา
‫และ ณ จุดนี้ มาสร้างที่พักพิงสำหรับสุนัขกันเถอะ
‫ไม่เป็นไร.
‫ดังนั้นเราจึงมีที่พักพิงสำหรับสุนัขที่เรียกว่า Shelter และมันจะเป็นที่พักพิงสำหรับสุนัขแห่งใหม่
‫ดังนั้นเราจึงเริ่มต้นได้ทันทีเช่นกัน เพื่อให้เราสามารถใช้วัตถุที่พักพิงนี้ได้ เนื่องจากวัตถุที่พักพิงจะมีรายชื่อสุนัข
‫ถูกต้อง.
‫ตอนนี้สิ่งที่เราต้องการจะทำคือเราต้องการทบทวนรายการและตรวจสอบว่าเราต้องการให้ขนมกับพวกเขาหรือไม่
‫เรามาสร้าง a สำหรับแต่ละอันที่นี่เหมือน so double tab เพื่อเตรียมมันสำหรับเรา
‫แล้วเราจะผ่านมันไปได้อย่างไร?
‫ดีเรากำลังจะผ่านสุนัข
‫และเราจะเรียกสุนัข
‫ดังนั้นทุกรายการในรายการจะเป็นสุนัข
‫แล้วของสะสมที่เราอยากจะทำก็คือ ที่จริงแล้ว จะเป็นที่หลบภัย
‫ชอบ.
‫ตอนนี้เรามีปัญหาเล็กน้อย
‫เมื่อเราวางเมาส์เหนือมัน เราบอกว่าเราเห็นชื่อของคอลเลกชันหรืออาร์เรย์ที่จะวนซ้ำคือที่พักพิง
‫แต่สำหรับแต่ละคำสั่งไม่สามารถดำเนินการกับตัวแปรของประเภทที่พักพิงสำหรับสุนัขได้ เนื่องจากที่พักพิงของสุนัขไม่มีอินสแตนซ์สาธารณะหรือคำจำกัดความส่วนขยายสำหรับ
‫รับการแจงนับ
‫โอเค เรามีตัวแจงนับ
‫แล้วมันหมายความว่าอย่างไร?
‫นี่หมายความว่าเราจำเป็นต้องใช้อินเทอร์เฟซที่ฉันนับได้ตรงนี้สำหรับที่พักพิงสำหรับสุนัขของเรา เพราะที่พักพิงสำหรับสุนัขนี้มีรายการที่เราอยากจะอธิบายซ้ำ
‫ใช่ไหม
‫เพราะถ้าคุณดูมัน ที่พักอาศัย ก็คือ ที่พักพิงสำหรับสุนัขของเรา นั่นคือที่พักพิงที่เราอยากจะทำซ้ำ
‫และเพื่อให้ทำซ้ำได้ เราจำเป็นต้องนำ AI ที่นับได้มาใช้ที่นี่
‫และวัตถุประเภทใดที่เราต้องการแจกแจง?
‫ในกรณีของเรา มันจะเป็นสุนัข
‫ดังนั้นเราจึงต้องการที่จะสามารถเจาะเข้าไปในสุนัขที่อยู่ในที่พักพิงของสุนัขได้ เพราะว่า เรามีสุนัขในรายชื่อนี้
‫และมันเริ่มต้นที่นี่ในโปรแกรมสร้างที่พักพิงสำหรับสุนัข
‫และเราต้องการให้แน่ใจว่าเราสามารถผ่านมันไปได้ทั้งหมด และทำบางสิ่งกับสุนัข
‫เช่น เลี้ยงพวกมัน หรือในกรณีของเรา ให้ขนมพวกมัน
‫เมื่อคุณใช้สิ่งนี้และขึ้นไปที่นี่ ข้อผิดพลาดจะหายไป
‫ทันใดนั้นก็ไม่เป็นไรเพราะตอนนี้ที่พักพิงของเราซึ่งเป็นที่พักพิงสำหรับสุนัขตอนนี้ทำตามคำแนะนำที่เพิ่งได้รับให้เราซึ่งจำเป็นต้องดำเนินการ
‫ฉันนับได้ที่นี่
‫นี่คือคำทั่วไปที่ฉันนับได้เพราะเรามีเอกสารนี้อยู่ที่นี่
‫ใช่ไหม
‫เพราะมันไม่ใช่ตัวนี้
‫เป็นประเภทเดียวกับที่เรามอบให้
‫แต่ตอนนี้ เมื่อเราวางเมาส์เหนือมัน เราจะเห็นข้อผิดพลาดอื่น
‫มันบอกว่า docshelter ไม่ได้ติดตั้งส่วนต่อประสานกับสมาชิก
‫ฉันนับได้ doc get enumerator และ I enumeable get enumerator เพื่อให้เราสามารถใส่ไว้ในนั้นด้วยตนเอง
‫แต่ความสวยงามของการใช้ ID ก็คือ ID นั้นสามารถทำงานให้เราได้มากมาย ดังนั้น คุณสามารถคลิกที่แสดงการแก้ไขที่เป็นไปได้
‫จากนั้นคลิกที่ Implement สมาชิกทั้งหมดอย่างชัดเจน จากนั้นจะเพิ่มเนมสเปซของคอลเลกชันให้เรา
‫ดูแลการเพิ่มสองวิธีสำหรับเราหรือสมาชิกสองคนนั้น
‫เมื่อเราคลิกที่สิ่งนี้ คุณจะเห็นว่าข้อผิดพลาดนี้จะหายไป
‫และหากเราเลื่อนลงไปอีก คุณจะพบว่าตอนนี้เรากำลังส่งคืนตัวแจงนับของประเภท doc และคอลเล็กชันตัวแจงนับที่ไม่ใช่แบบทั่วไป
‫ตอนนี้เรายังไม่ได้ดำเนินการ
‫นั่นเป็นเหตุผลที่เรามีข้อยกเว้น x ใหม่ที่ไม่ได้ใช้งานที่นี่
‫ดังนั้นเราจึงจำเป็นต้องเปลี่ยนสิ่งนั้นที่นี่
‫ตอนนี้เราสามารถใช้สิ่งที่ควรเกิดขึ้นกับวิธี get enumerator ของเราได้เมื่อมีการเรียก
‫ดังนั้นเพื่อแก้ไข สิ่งที่เรากำลังจะพูดในที่นี้ก็แค่กลับมา
‫Dogs รายการของเรา dog dot get enumerator เช่นนั้น
‫และนั่นจะเป็นการดำเนินการเพราะตอนนี้ที่พักพิงสุนัขของเรากำลังใช้อินเทอร์เฟซที่นับได้
‫และรายการของเราที่นี่คือ A หากคุณวางเมาส์เหนือรายการ รายการก็คือรายการทั่วไป
‫และตอนนี้ เราสามารถนำสุนัขรายการเหล่านี้ และเราสามารถรับการแจงนับสำหรับการทำซ้ำทุก ๆ ครั้งที่เราจะทำในแต่ละกลุ่ม
‫โดยพื้นฐานแล้วมันจะส่งกลับสุนัขแต่ละตัว
‫และตอนนี้สิ่งที่เราทำได้คือ เราสามารถใช้ dog ในแต่ละวงของเราได้
‫โดยพื้นฐานแล้วหมายความว่าตอนนี้เราสามารถไปข้างหน้าและตรวจสอบว่าสุนัขไม่ซนหรือไม่
‫ดังนั้น dog dot จึงไม่ซน
‫หากเป็นกรณีนี้ โดยทั่วไปหมายความว่าถ้าสุนัขไม่ซน เราจะเรียกวิธีการนี้
‫ให้ขนม และเราจะให้ขนมเขาสองชิ้น
‫มิฉะนั้น ถ้าเขาซน เพราะเราไม่สามารถให้ขนมได้ เราก็รักสุนัขมากเกินไป
‫เราแค่จะให้รางวัลพวกเขาอย่างนั้น
‫และ ณ จุดนี้ เราสามารถเรียกใช้แอปพลิเคชันของเราได้
‫และเราจะได้เห็น
‫แคสเปอร์พูดกับวูล์ฟสองครั้ง เพราะเขาเป็นสุนัขที่ดี ดมกลิ่นเป็นสุนัขซุกซน ดังนั้นเขาจึงได้รับขนมเพียงชิ้นเดียว
‫และเขาก็พูดว่า วูฟ เมื่อโอรีโอทำสองครั้ง และพิกเซลก็เคลื่อนไหวสองครั้งเช่นกัน
‫ไม่เป็นไร.
‫และนั่นคือวิธีที่คุณสามารถทำให้ชั้นเรียนของคุณทำตามคำแนะนำหรือใช้ AI enumerable
‫เพื่อให้คุณสามารถวนรอบรายการโดยใช้ for each loop เช่นที่เรามีที่นี่
‫ตอนนี้ คุณอาจสงสัยว่าทำไมเราไม่ใช้ตัวแจงนับเกทกับตัวแจงนับ AI ซึ่งเป็นตัวที่ไม่ใช่แบบทั่วไป
‫นั่นก็เพราะว่าเราไม่ได้ใช้ตัวอย่างที่ไม่ธรรมดา และที่พักพิงของสุนัขของเราก็ไม่ใช่แบบทั่วไปเช่นกัน
‫แต่เป็นเพียงว่าคุณต้องใช้มันเมื่อใช้อินเทอร์เฟซ AI ที่นับได้ เพราะไม่เช่นนั้นหากคุณกำจัดมันออกไป เราจะได้รับ
‫คำเตือนที่นี่อีกครั้ง
‫คุณเห็นไหมว่าจริงๆ แล้วเราอยู่ในข้อผิดพลาด ดังนั้นเราต้องตรวจสอบให้แน่ใจว่าเรามีวิธีนี้ในนั้นด้วย
‫ไม่เป็นไร.
‫เท่านี้ก็เรียบร้อยสำหรับวิดีโอนี้
‫และในวิดีโอหน้า เราจะมาดูอีกตัวอย่างหนึ่งที่เราจะใช้ประโยชน์จากดวงตา มากกว่านั้นอีกนับไม่ถ้วน
‫นี่เป็นเพียงการแนะนำเล็กน้อย
‫ฉันรู้ว่าหัวข้อนี้ค่อนข้างซับซ้อนและซับซ้อน แต่เราจะใช้ประโยชน์จากหัวข้อนี้ให้มากขึ้น
‫และตอนนี้ ขอสรุปสั้นๆ ที่นี่
‫แนะนำให้ใช้อินเทอร์เฟซ AI enumerable เมื่อใด
‫คุณควรใช้มันเมื่อคอลเลกชันของคุณแสดงตารางฐานข้อมูลขนาดใหญ่
‫ดังนั้นคุณจึงไม่ต้องการคัดลอกสิ่งทั้งหมดลงในหน่วยความจำและทำให้เกิดปัญหาด้านประสิทธิภาพในแอปพลิเคชันของคุณเนื่องจากฐานข้อมูลอาจมีขนาดใหญ่ใช่ไหม
‫มันสามารถมีได้หลายล้านรายการ
‫และคุณไม่ต้องการที่จะโหลดสิ่งทั้งหมดเพื่อวนซ้ำ แต่คุณต้องการโหลดมากเท่าที่คุณต้องการสำหรับกระบวนการปัจจุบัน
‫สิ่งที่คุณต้องการดำเนินการ
‫แล้วเมื่อใดที่คุณไม่ควรใช้อินเทอร์เฟซ AI ที่นับได้
‫เมื่อคุณต้องการผลลัพธ์ทันทีและคุณอาจกลายพันธุ์ แก้ไขวัตถุในภายหลัง
‫ในกรณีนี้ ควรใช้อาร์เรย์หรือรายการ
‫ดังนั้นเมื่อคุณต้องการกลายพันธุ์หรือแก้ไขวัตถุในภายหลังและไม่ต้องการผลลัพธ์ในทันที
‫ให้ใช้อาร์เรย์หรือรายการ
‫มิฉะนั้นให้ใช้ AI ที่นับได้เพราะจะมีประสิทธิภาพมากขึ้น
‫ไม่เป็นไร.
‫เท่านี้ก็เรียบร้อยสำหรับวิดีโอนี้
‫เจอกันใหม่ตอนหน้าค่ะ