คำตอบของ Svick นั้นดี แต่ฉันคิดว่าฉันจะเพิ่มคะแนนพิเศษอีกเล็กน้อย
ก่อนปิดวรรคมีข้อบกพร่อง ประเภทตัวชี้ไม่สืบทอดมาจากวัตถุ ค่าที่ทราบ ณ เวลารวบรวมเป็นประเภทอินเตอร์เฟสหรือชนิดพารามิเตอร์จะ ณ เวลารันไทม์จะเป็นการอ้างอิงที่ไม่ถูกต้องหรืออินสแตนซ์ bona-fide ของสิ่งที่สืบทอดมาจากวัตถุ แต่มันก็มีโครงสร้างที่แปลกสำหรับฉันเสมอ สืบทอด "จากวัตถุ การสืบทอดเป็นคุณสมบัติที่สมาชิกของบรรพบุรุษเป็นสมาชิกของผู้สืบทอด แต่โดยปกติคุณไม่คิดว่า "ToString" เป็นสมาชิกของ IEnumerable คุณคิดว่ามันเป็นการเป็นสมาชิกของสิ่งที่ดำเนินการ IEnumerable
ย่อหน้านี้ยังมีข้อบกพร่องเพราะนี่เป็นเพียงสถานที่เดียว "ประเภทดั้งเดิม" ปรากฏขึ้นในสเป็คและมันจะปรากฏขึ้นโดยไม่มีคำนิยาม ดังนั้นจึงไม่จำเป็นและสับสนและควรลบ
ฉันต้องการให้ย่อหน้านี้ได้รับการแก้ไขชั่วขณะหนึ่ง ครั้งต่อไปที่ฉันเห็น Mads ฉันจะเตือนเขา
ในการตอบคำถามที่เฉพาะเจาะจงของคุณ: svick ถูกต้องแน่นอน แต่จะเป็นประโยชน์ในการดูตัวอย่างที่เฉพาะเจาะจง เมื่อคุณพูดว่า:
struct ColorfulInt
{
int value;
Color color;
...
}
และคุณสร้างพูดอาร์เรย์:
ColorfulInt[] x = new ColorFulInt[100];
แล้วจัดเก็บข้อมูลสำหรับผู้ ints 100 และ 100 สีไปในอาร์เรย์ของตัวเอง ถ้า ColorfulInt เป็นคลาสแล้วอาร์เรย์จะมีการอ้างอิงถึง 100 ถึง ColorfulInt แต่ละอันจะต้องถูกจัดสรรแยกต่างหาก การจัดสรรองค์ประกอบร้อยรายการแยกกันนั้นมีประสิทธิภาพน้อยกว่าทั้งในเวลาและพื้นที่มากกว่าการจัดสรรพื้นที่เก็บข้อมูลในอาร์เรย์เอง