1 00:00:00,450 --> 00:00:01,290 ‫ยินดีต้อนรับกลับ. 2 00:00:01,320 --> 00:00:03,450 ‫ในวิดีโอนี้ เราจะพูดถึงโครงสร้าง 3 00:00:03,450 --> 00:00:11,430 ‫และ struct นั้นคล้ายกับคลาสมาก แต่คลาสเป็นประเภทอ้างอิง และ struct เป็นประเภทค่า ซึ่งหมายความว่าถ้าคุณสร้างอ็อบเจ็กต์ของคลาส 4 00:00:11,430 --> 00:00:16,350 ‫คลาสนั้นจะไม่มีอะไรเลย 5 00:00:16,350 --> 00:00:19,800 ‫ดังนั้นมันจึงว่างเปล่าได้ แต่โครงสร้างต้องมีค่า 6 00:00:19,950 --> 00:00:26,190 ‫มาสร้างโครงสร้างที่เรียกว่าเกมกันเถอะ คุณใช้คีย์เวิร์ด struct แล้วตั้งชื่อให้มัน 7 00:00:26,190 --> 00:00:29,280 ‫ดังนั้นมันจึงคล้ายกับชั้นเรียนจากสิ่งที่คุณเห็น 8 00:00:29,280 --> 00:00:33,690 ‫คุณมีชื่อนี้ที่นี่ และจากนั้นคุณสามารถสร้างตัวแปรที่นี่ได้ 9 00:00:33,690 --> 00:00:39,510 ‫ฉันจะสร้างอันที่เรียกว่าชื่อ จากนั้นฉันจะสร้างอันที่เรียกว่านักพัฒนา 10 00:00:40,230 --> 00:00:44,760 ‫และอีกอันที่เป็นการให้คะแนน 11 00:00:44,850 --> 00:00:50,970 ‫ดังนั้นเกมนี้ได้รับการจัดอันดับอย่างไรและวันที่เผยแพร่สตริงสาธารณะเป็นอย่างไร 12 00:00:50,970 --> 00:00:52,410 ‫แล้วปล่อยเมื่อไหร่? 13 00:00:52,680 --> 00:00:54,360 ‫นั่นเป็นโครงสร้างง่ายๆ 14 00:00:54,360 --> 00:01:04,560 ‫ตอนนี้เราสามารถไปข้างหน้าและสร้างวัตถุของโครงสร้างนั้นเพื่อให้เราสามารถไปข้างหน้าและพูดว่าโอเคเกมเกมหนึ่งแบบนั้น 15 00:01:04,560 --> 00:01:06,030 ‫ตอนนี้เรามีเกมนี้แล้ว 16 00:01:06,030 --> 00:01:11,880 ‫แต่เพื่อที่จะใช้เกมนั้น เราจำเป็นต้องดำเนินการต่อไปและระบุมัน 17 00:01:11,880 --> 00:01:14,190 ‫ดังนั้นเราจึงต้องการสเปกของเกม 18 00:01:14,190 --> 00:01:23,640 ‫ตัวอย่างเช่น เราต้องตั้งชื่อว่า Pokémon Go จากนั้นเกมหนึ่งต้องมีผู้พัฒนา 19 00:01:24,750 --> 00:01:32,550 ‫ดังนั้นเราจะพูดบางอย่างเช่น Niantic และ Game one จำเป็นต้องมีการให้คะแนน 20 00:01:33,250 --> 00:01:40,380 ‫เอาเป็นว่า 3 5 จาก 5 ดาวและในที่สุดก็ถึงวันวางจำหน่าย 21 00:01:40,740 --> 00:01:43,770 ‫ดังนั้นคุณจึงสามารถตั้งค่าเช่นนั้นได้ 22 00:01:43,770 --> 00:01:48,120 ‫มันเลยคล้ายกับสิ่งที่คุณจะทำกับชั้นเรียนใช่ไหม? 23 00:01:48,540 --> 00:01:55,770 ‫ดังนั้นมันจึงเปิดตัวในปี 2559 และนั่นคือโครงสร้างเกมของเราที่เรามีที่นี่ 24 00:01:55,770 --> 00:02:00,540 ‫ตอนนี้ เราสามารถดำเนินการต่อและเขียนข้อมูลเกมลงบนคอนโซลได้ 25 00:02:00,540 --> 00:02:03,630 ‫สมมติว่าเราต้องการเขียนชื่อเกม 26 00:02:03,630 --> 00:02:07,590 ‫ดังนั้น CW เกมหนึ่ง 27 00:02:09,980 --> 00:02:22,610 ‫และชื่อของเขาคือแล้ววงเล็บปีกกาศูนย์และชื่อจุดเกมหรือเกมชื่อเดียว 28 00:02:23,570 --> 00:02:30,860 ‫อย่างที่คุณเห็น คุณสามารถดำเนินการต่อและเรียกมันว่าตัวแปร เพื่อให้เราทำสิ่งเดียวกันได้ ไม่ใช่แค่กับชื่อ 29 00:02:30,860 --> 00:02:33,200 ‫เราสามารถทำสิ่งนั้นกับอย่างอื่นได้ 30 00:02:33,210 --> 00:02:34,910 ‫ดังนั้นฉันจะคัดลอกสิ่งนั้น 31 00:02:35,000 --> 00:02:43,490 ‫เกมที่หนึ่งได้รับการพัฒนาและตอนนี้ไม่ใช่ชื่อเกม แต่เป็นผู้พัฒนา 32 00:02:44,120 --> 00:02:45,800 ‫และเช่นเดียวกันที่นี่ 33 00:02:47,420 --> 00:02:50,540 ‫เรตติ้งเป็นเกมหนึ่ง 34 00:02:51,680 --> 00:02:55,580 ‫เรตติ้งคือและนี่คือเรตติ้ง 35 00:02:56,210 --> 00:03:05,960 ‫และในที่สุด เกมที่หนึ่งก็เปิดตัวในวันที่เกมวันวางจำหน่ายอีกครั้ง 36 00:03:08,320 --> 00:03:09,430 ‫ตอนนี้ขอเรียกใช้ 37 00:03:10,840 --> 00:03:17,110 ‫ควบคุมปุ่มสีแดงแล้วมาดูกันว่าเกิดอะไรขึ้น 38 00:03:18,800 --> 00:03:19,880 ‫และเราเป็นเกม 39 00:03:19,880 --> 00:03:21,440 ‫คนหนึ่งชื่อโปเกม่อนโก 40 00:03:21,470 --> 00:03:23,780 ‫เกมที่หนึ่งได้รับการพัฒนาโดย Niantic 41 00:03:23,960 --> 00:03:29,120 ‫เรตติ้งคือ 3 5 และออกจำหน่ายในวันที่ 1 กรกฎาคม 2559 42 00:03:29,150 --> 00:03:29,750 ‫ไม่เป็นไร. 43 00:03:29,750 --> 00:03:31,310 ‫เพื่อที่เราจะเป็น 44 00:03:31,340 --> 00:03:35,030 ‫เป็นพื้นฐานและคล้ายกับชั้นเรียนมาก 45 00:03:35,030 --> 00:03:35,600 ‫ถูกต้อง. 46 00:03:36,590 --> 00:03:37,970 ‫แล้วมันต่างกันยังไง? 47 00:03:38,000 --> 00:03:40,430 ‫มีอีกอย่างที่ไม่ต่างกัน 48 00:03:40,910 --> 00:03:47,270 ‫ฉันจะสร้างการแสดงโมฆะสาธารณะ ซึ่งควรแสดงข้อมูล 49 00:03:47,270 --> 00:03:52,070 ‫และสิ่งที่ผมจะทำคือผมจะดำเนินการทั้งหมดนั้นในนั้น 50 00:03:52,070 --> 00:03:54,770 ‫เลยจะตั้งชื่อให้ว่า 51 00:03:54,770 --> 00:03:56,750 ‫มันจะให้ฉันนักพัฒนา 52 00:03:56,900 --> 00:04:00,800 ‫มันจะให้คะแนนฉันและวันที่เผยแพร่ 53 00:04:02,000 --> 00:04:02,330 ‫ไม่เป็นไร. 54 00:04:02,360 --> 00:04:09,110 ‫ตอนนี้ ฉันสามารถเรียกวิธีการแสดงแทนได้ และทำได้โดยเรียก game one แล้วบอกว่า 55 00:04:09,110 --> 00:04:11,570 ‫โปรดแสดงข้อมูลทั้งหมด 56 00:04:11,840 --> 00:04:15,860 ‫ทีนี้ลองเรียกใช้อีกครั้งและเราจะได้เห็นข้อมูลทั้งหมด 57 00:04:16,190 --> 00:04:16,580 ‫ไม่เป็นไร. 58 00:04:16,580 --> 00:04:18,740 ‫ดังนั้นคุณสามารถสร้างตัวแปรได้ 59 00:04:18,740 --> 00:04:19,670 ‫คุณสามารถสร้างวิธีการ 60 00:04:19,670 --> 00:04:20,520 ‫แต่มันแตกต่างกันอย่างไร? 61 00:04:20,540 --> 00:04:27,980 ‫สิ่งที่คุณทำไม่ได้คือคุณไม่สามารถสร้างคอนสตรัคเตอร์ได้ 62 00:04:28,520 --> 00:04:32,480 ‫โครงสร้างต้องไม่มีพารามิเตอร์ที่ชัดเจนน้อยกว่าตัวสร้าง 63 00:04:32,690 --> 00:04:35,300 ‫ดังนั้นคุณไม่สามารถสร้างคอนสตรัคเตอร์เริ่มต้นที่นี่ 64 00:04:35,840 --> 00:04:38,840 ‫จากนั้นจึงสามารถใช้อินเทอร์เฟซได้ตั้งแต่หนึ่งอินเทอร์เฟซขึ้นไป 65 00:04:38,840 --> 00:04:44,930 ‫ดังนั้นคุณสามารถไปข้างหน้าและใช้อินเทอร์เฟซที่นี่ ฉันสามารถทำความสะอาดได้ ฉันเปรียบเทียบสิ่งเหล่านั้นได้ 66 00:04:46,070 --> 00:04:48,950 ‫แล้วไม่สนับสนุนมรดก 67 00:04:48,950 --> 00:04:51,770 ‫ดังนั้นคุณจึงไม่สามารถใช้การสืบทอดกับโครงสร้างได้ 68 00:04:51,980 --> 00:04:53,750 ‫คุณไม่สามารถมีตัวสร้างเริ่มต้นได้ 69 00:04:53,750 --> 00:05:03,080 ‫ดังที่ฉันได้กล่าวไปแล้วว่าสมาชิก struct ไม่สามารถระบุเป็นนามธรรม เสมือนหรือได้รับการปกป้อง ดังนั้นพวกเขาจึงสามารถเป็นแบบสาธารณะได้ 70 00:05:03,080 --> 00:05:06,110 ‫ดังนั้นคุณสามารถมีโครงสร้างสาธารณะหรือคุณสามารถมีโครงสร้างส่วนตัวได้ 71 00:05:08,590 --> 00:05:11,320 ‫โครงสร้างสามารถกำหนดคอนสตรัคเตอร์ได้ 72 00:05:11,320 --> 00:05:17,500 ‫ดังนั้นคุณสามารถมีบางอย่างเช่นเกมสาธารณะ แล้วที่นี่คุณมีชื่อสตริง 73 00:05:18,280 --> 00:05:30,790 ‫คุณสามารถมีสิ่งนั้นและที่จะเป็นชื่อหรือชื่อนี้เท่ากับชื่อและนักพัฒนาดอทนี้เป็นนักพัฒนาที่เท่าเทียมกัน 74 00:05:32,260 --> 00:05:35,200 ‫ระดับดาวเป็นคะแนนที่เท่ากัน 75 00:05:35,200 --> 00:05:39,640 ‫และวันที่เผยแพร่ DOT นี้เป็นวันที่เผยแพร่เท่ากัน 76 00:05:39,670 --> 00:05:41,710 ‫แน่นอนว่าคุณต้องมีพวกมันที่นี่ 77 00:05:41,710 --> 00:05:50,050 ‫ผู้พัฒนาสตริง จากนั้นให้คะแนนสองเท่าและวันที่เผยแพร่สตริง 78 00:05:50,980 --> 00:06:05,690 ‫ตัวอย่างเช่น หากคุณต้องการดำเนินการต่อและแสดงวิธีการแสดงที่นี่ แสดงว่าคุณพบข้อผิดพลาดเนื่องจากการใช้เกมตัวแปรท้องถิ่นที่ไม่ได้กำหนด 79 00:06:05,710 --> 00:06:08,320 ‫ดังนั้นเกมแรกจึงไม่ได้รับมอบหมาย 80 00:06:08,320 --> 00:06:16,060 ‫แม้ว่าฉันจะพยายามแล้วก็ตาม สมมติว่าหลังจากมีข้อมูลทั้งหมดจนถึงตอนนี้ คุณจะเห็นว่ายังมีข้อผิดพลาดอยู่ 81 00:06:16,060 --> 00:06:21,520 ‫ดังนั้นคุณต้องมีข้อมูลที่แตกต่างกันทั้งหมดเกี่ยวกับเกมนี้จึงจะได้รับมอบหมาย 82 00:06:21,550 --> 00:06:23,380 ‫มิฉะนั้น ละครเรื่องนี้ใช้ไม่ได้ 83 00:06:23,380 --> 00:06:27,490 ‫ดังนั้นแม้ที่นี่ หลังจากที่เราได้คะแนนแล้ว เราก็ยังคงได้รับข้อผิดพลาดเดิม 84 00:06:27,520 --> 00:06:30,940 ‫หลังจากที่เราได้กำหนดค่าทั้งหมดแล้ว เราก็สามารถทำงานได้ 85 00:06:30,940 --> 00:06:36,390 ‫ดังนั้นมันจึงทำงานด้วยค่า ไม่ใช่โดยการอ้างอิง เหมือนที่คลาสจะทำ 86 00:06:36,400 --> 00:06:37,000 ‫ถูกต้อง. 87 00:06:38,050 --> 00:06:42,760 ‫ดังนั้นหากคุณต้องการสรุปสั้นๆ StackOverflow คือเพื่อนของคุณ 88 00:06:42,760 --> 00:06:47,410 ‫สรุปสั้น ๆ เกี่ยวกับมรดกสนับสนุนของแต่ละชั้น 89 00:06:47,410 --> 00:06:52,840 ‫ต้นแบบอ้างอิงของเราสามารถเป็นโมฆะและมีหน่วยความจำเกินฮีปต่ออินสแตนซ์ใหม่ 90 00:06:52,840 --> 00:06:55,900 ‫โครงสร้างไม่สามารถรองรับการสืบทอดได้เท่านั้น 91 00:06:55,900 --> 00:07:02,950 ‫ประเภทค่าของเราจะถูกส่งผ่านโดยค่าที่คล้ายกับจำนวนเต็ม ดังนั้นคุณจึงไม่สามารถมีการอ้างอิงที่เป็นค่าว่างตามที่คุณเห็น 92 00:07:02,950 --> 00:07:07,390 ‫และไม่มีหน่วยความจำเกินฮีปต่ออินสแตนซ์ใหม่ 93 00:07:07,390 --> 00:07:13,360 ‫และทั้งสองชนิดมีแบบผสมหรือเป็นชนิดข้อมูลแบบผสมซึ่งโดยทั่วไปจะใช้เพื่อให้มีตัวแปรบางตัวที่มีความสัมพันธ์เชิงตรรกะบางอย่าง 94 00:07:13,360 --> 00:07:19,180 ‫สามารถมีเมธอดและเหตุการณ์ และสามารถรองรับอินเทอร์เฟซได้ 95 00:07:20,980 --> 00:07:28,360 ‫แม้ว่าไซมอน สตีเฟนส์จะโต้แย้งว่าคลาสไม่ได้ไปแบบกองหรือชนวนเสมอไป แต่อย่าไปซ้อนกันเสมอไป 96 00:07:28,690 --> 00:07:29,020 ‫ไม่เป็นไร. 97 00:07:29,020 --> 00:07:34,780 ‫และรายการ StackOverflow โดยทั่วไปมีข้อมูลที่มีค่าค่อนข้างมากเกี่ยวกับโครงสร้าง 98 00:07:34,780 --> 00:07:37,630 ‫ดังนั้นความแตกต่างระหว่างโครงสร้างและคลาส 99 00:07:37,630 --> 00:07:39,880 ‫แต่คุณเคยเห็นพวกเขาส่วนใหญ่ที่นี่ 100 00:07:39,880 --> 00:07:45,880 ‫แต่ตามปกติแล้ว ฉันมักจะแนะนำให้ตรวจสอบเอกสารประกอบเพื่อให้เข้าใจมากขึ้น