Semantically, a Dictionary<int, T>
และList<T>
คล้ายคลึงกันมากทั้งสองเป็น container access แบบสุ่มของ. NET Framework ในการใช้รายการแทนพจนานุกรมคุณต้องมีค่าพิเศษในประเภทของคุณT
(เช่นnull
) เพื่อแสดงช่องว่างในรายการของคุณ หากT
ไม่ใช่ประเภท nullable เช่นint
คุณสามารถใช้int?
แทนหรือถ้าคุณเป็นเพียงการคาดหวังว่าจะเก็บค่าบวกคุณยังสามารถใช้ค่าพิเศษเช่น -1 เพื่อเป็นตัวแทนของช่องว่าง
ตัวเลือกใดที่คุณควรเลือกจะขึ้นอยู่กับช่วงของค่าคีย์ หากกุญแจของคุณอยู่ในDictionary<int, T>
อยู่ในช่วงจำนวนเต็มโดยไม่มีช่องว่างจำนวนมาก (เช่น 80 ค่าจาก [0, ... 100]) ดังนั้น a List<T>
จะเหมาะสมกว่าเนื่องจากการเข้าถึงโดยดัชนีเร็วกว่าและ มีหน่วยความจำและค่าใช้จ่ายน้อยลงเมื่อเทียบกับพจนานุกรมในกรณีนี้
หากค่าคีย์ของคุณคือ 100 int
ค่าจากช่วงเช่น [0, ... , 1000000] ดังนั้นList<T>
หน่วยความจำจำเป็นต้องเก็บค่า 1000000 ของ T ซึ่งพจนานุกรมของคุณจะต้องใช้หน่วยความจำตามลำดับขนาดประมาณ 100 ค่า T 100 ค่าของ int (บวกค่าใช้จ่ายในความเป็นจริงคาดว่าประมาณ 2 เท่าของหน่วยความจำสำหรับการจัดเก็บ 100 คีย์และค่าเหล่านั้น) ดังนั้นในกรณีหลังพจนานุกรมจะเหมาะสมกว่า