พจนานุกรม (C # หรืออย่างอื่น) เป็นเพียงคอนเทนเนอร์ที่คุณค้นหาค่าโดยใช้คีย์ ในหลายภาษาจะมีการระบุอย่างถูกต้องว่าเป็นแผนที่ซึ่งมีการใช้งานทั่วไปเป็น HashMap
ปัญหาที่ต้องพิจารณาคือสิ่งที่เกิดขึ้นเมื่อไม่มีคีย์ บางภาษาทำงานโดยการส่งคืนnull
หรือnil
ค่าที่เทียบเท่าอื่น ๆ การเริ่มต้นที่เงียบ ๆ เป็นค่าแทนที่จะแจ้งให้คุณทราบว่าไม่มีค่าอยู่
ไม่ว่าจะดีขึ้นหรือแย่ลงนักออกแบบห้องสมุด C # ก็มีสำนวนเพื่อจัดการกับพฤติกรรม พวกเขาให้เหตุผลว่าพฤติกรรมเริ่มต้นสำหรับการค้นหาค่าที่ไม่มีอยู่คือการโยนข้อยกเว้น หากคุณต้องการหลีกเลี่ยงข้อยกเว้นคุณสามารถใช้Try
ตัวแปรได้ มันเป็นวิธีการเดียวกับที่ใช้ในการแยกสตริงเป็นจำนวนเต็มหรือวัตถุวันที่ / เวลา โดยพื้นฐานแล้วผลกระทบจะเป็นดังนี้:
T count = int.Parse("12T45"); // throws exception
if (int.TryParse("12T45", out count))
{
// Does not throw exception
}
และนำไปสู่พจนานุกรมซึ่งผู้ทำดัชนีมอบหมายให้Get(index)
:
var myvalue = dict["12345"]; // throws exception
myvalue = dict.Get("12345"); // throws exception
if (dict.TryGet("12345", out myvalue))
{
// Does not throw exception
}
นี่เป็นเพียงวิธีการออกแบบภาษา
ควรout
ลดทอนตัวแปรหรือไม่
C # ไม่ใช่ภาษาแรกที่มีและพวกเขามีจุดประสงค์ในสถานการณ์เฉพาะ หากคุณพยายามสร้างระบบที่เกิดขึ้นพร้อมกันอย่างมากคุณจะไม่สามารถใช้out
ตัวแปรที่ขอบเขตการทำงานพร้อมกันได้
ในหลาย ๆ ทางหากมีสำนวนที่ดำเนินการโดยผู้ให้บริการภาษาและห้องสมุดหลักฉันพยายามที่จะใช้สำนวนเหล่านั้นใน API ของฉัน นั่นทำให้ API รู้สึกสอดคล้องกันมากขึ้นและเหมือนอยู่บ้านในภาษานั้น ดังนั้นวิธีที่เขียนใน Ruby จะไม่ดูเหมือนวิธีที่เขียนใน C #, C หรือ Python พวกเขาแต่ละคนมีวิธีการสร้างรหัสที่ต้องการและการทำงานกับสิ่งนั้นจะช่วยให้ผู้ใช้ API ของคุณเรียนรู้ได้เร็วขึ้น
แผนที่โดยทั่วไปเป็นแบบป้องกันหรือไม่
พวกเขามีจุดประสงค์ของพวกเขา แต่หลายครั้งพวกเขาอาจเป็นทางออกที่ผิดสำหรับจุดประสงค์ที่คุณมี โดยเฉพาะถ้าคุณมีการทำแผนที่สองทิศทางที่คุณต้องการ มีคอนเทนเนอร์และวิธีจัดระเบียบข้อมูลมากมาย มีวิธีการมากมายที่คุณสามารถใช้ได้และบางครั้งคุณต้องคิดให้ดีก่อนที่จะเลือกคอนเทนเนอร์นั้น
หากคุณมีรายการการแมปสองทิศทางที่สั้นมากคุณอาจต้องการเพียงรายการของสิ่งอันดับ หรือรายการของโครงสร้างที่คุณสามารถค้นหาคู่แรกได้อย่างง่ายดายทั้งสองด้านของการจับคู่
นึกถึงโดเมนปัญหาและเลือกเครื่องมือที่เหมาะสมที่สุดสำหรับงาน หากไม่มีอยู่ให้สร้างขึ้นมา