เลือกชนิดข้อมูลที่ถูกต้อง

เสร็จสมบูรณ์เมื่อ

คุณได้รับการแนะนําให้รู้จักกับความแตกต่างระหว่างชนิดค่าและชนิดการอ้างอิง รวมถึงจํานวนเต็มและชนิดจุดทศนิยมลอยตัว

สมมติว่างานของคุณคือการสร้างแอปพลิเคชันใหม่ที่เรียกใช้ จัดการ และจัดเก็บข้อมูลชนิดต่างๆ คุณใช้ชนิดข้อมูลใด

ในบางกรณีเป็นตัวเลือกที่ง่าย ตัวอย่างเช่น เมื่อคุณต้องทํางานกับข้อความ คุณเริ่มต้นการใช้ string ชนิดข้อมูลเว้นแต่ว่าคุณต้องการดําเนินการเรียงต่อกันเป็นจํานวนมาก

แต่ว่าเกิดอะไรขึ้นกับการทํางานกับข้อมูลตัวเลข มีตัวเลือกที่แตกต่างกัน 11 ตัวเลือก คุณจะเลือกประเภทข้อมูลที่ถูกต้องได้อย่างไร

เลือกชนิดข้อมูลที่ถูกต้อง

ด้วยชนิดข้อมูลมากมายให้เลือก คุณควรใช้เกณฑ์ใดในการเลือกชนิดข้อมูลที่เหมาะสมสําหรับสถานการณ์เฉพาะ

เมื่อประเมินตัวเลือกของคุณคุณต้องมีน้ําหนักข้อควรพิจารณาที่สําคัญหลายข้อ บ่อยครั้งที่คําตอบมักไม่มีคําตอบที่ถูกต้องเพียงคําตอบเดียว แต่คําตอบบางคําตอบนั้นถูกต้องมากกว่าคําตอบอื่น

เลือกชนิดข้อมูลที่ตรงตามข้อกําหนดช่วงค่าขอบเขตของแอปพลิเคชันของคุณ

ตัวเลือกของชนิดข้อมูลสามารถช่วยในการตั้งค่าขอบเขตสําหรับขนาดของข้อมูลที่คุณอาจจัดเก็บไว้ในตัวแปรเฉพาะ ตัวอย่างเช่น ถ้าคุณทราบว่าตัวแปรใดตัวแปรหนึ่งควรเก็บตัวเลขระหว่าง 1 ถึง 10,000 มิฉะนั้นจะอยู่นอกขอบเขตของสิ่งที่คาดหมาย คุณอาจหลีกเลี่ยง byte และ sbyte เนื่องจากช่วงนั้นต่ําเกินไป

นอกจากนี้ คุณอาจไม่ต้องการ int, long, uintและ ulong เนื่องจากพวกเขาสามารถจัดเก็บข้อมูลได้มากกว่าที่จําเป็น ในทํานองเดียวกัน คุณอาจข้าม floatdouble, และdecimalถ้าคุณไม่ต้องการค่าเศษส่วน คุณอาจจํากัดขอบเขตให้แคบลงเป็น short และ ushortซึ่งทั้งสองอย่างอาจทํางานได้ ถ้าคุณมั่นใจว่าค่าลบจะไม่มีความหมายในแอปพลิเคชันของคุณ คุณอาจเลือก ushort (จํานวนเต็มที่ไม่มีเครื่องหมายบวก, 0 ถึง 65,535) ตอนนี้ค่าใด ๆ ที่กําหนดให้กับตัวแปรชนิด ushort ที่อยู่นอกขอบเขต 0 ถึง 65535 จะโยนข้อยกเว้นดังนั้นจึงช่วยให้คุณบังคับใช้ระดับการตรวจสอบสติในแอปพลิเคชันของคุณ

เริ่มต้นด้วยการเลือกชนิดข้อมูลเพื่อให้พอดีกับข้อมูล (ไม่ปรับประสิทธิภาพให้เหมาะสม)

คุณอาจถูกชักจูงให้เลือกชนิดข้อมูลที่ใช้บิตน้อยที่สุดเพื่อจัดเก็บข้อมูลโดยคิดว่ามันช่วยปรับปรุงประสิทธิภาพของแอปพลิเคชันของคุณ อย่างไรก็ตาม คําแนะนําที่ดีที่สุดบางอย่างที่เกี่ยวข้องกับประสิทธิภาพของแอปพลิเคชัน (นั่นคือความเร็วในการเรียกใช้แอปพลิเคชันของคุณ) คือการไม่ "ปรับให้เหมาะสมที่สุด" คุณควรต่อต้านการทดลองทดลองเพื่อคาดเดาที่ส่วนของโค้ดรวมถึงการเลือกชนิดข้อมูลที่อาจส่งผลกระทบต่อประสิทธิภาพของแอปพลิเคชันของคุณ

หลายคนสันนิษฐานว่าเนื่องจากชนิดข้อมูลที่กําหนดจัดเก็บข้อมูลน้อยกว่าต้องใช้ตัวประมวลผลและหน่วยความจําของคอมพิวเตอร์น้อยกว่าชนิดข้อมูลที่จัดเก็บข้อมูลเพิ่มเติม แต่คุณควรเลือกที่เหมาะสมกับข้อมูลของคุณ จากนั้นคุณสามารถวัดประสิทธิภาพของแอปพลิเคชันของคุณโดยใช้ซอฟต์แวร์พิเศษที่ให้ข้อมูลเชิงลึกจริงไปยังส่วนต่างๆ ของแอปพลิเคชันของคุณที่ส่งผลกระทบเชิงลบต่อประสิทธิภาพ

เลือกชนิดข้อมูลที่ยึดตามชนิดข้อมูลอินพุตและเอาท์พุตของฟังก์ชันไลบรารีที่ใช้

สมมติว่าคุณต้องการทํางานกับช่วงของปีระหว่างวันที่สองวัน เนื่องจากแอปพลิเคชันเป็นแอปพลิเคชันทางธุรกิจ คุณอาจตัดสินใจว่า คุณจําเป็นต้องมีช่วงตั้งแต่ประมาณ 1960 ถึง 2200 เท่านั้น คุณอาจคิดว่าพยายามทํางานด้วย byte เนื่องจากสามารถแสดงตัวเลขระหว่าง 0 และ 255 ได้

อย่างไรก็ตาม เมื่อคุณดูที่วิธีการSystem.TimeSpanที่มีอยู่ภายในคลาส และ System.DateTime คุณตระหนักว่าพวกเขาส่วนใหญ่ยอมรับค่าของชนิด double และint หากคุณเลือก sbyteคุณจะต้องแคสต์ไปมาระหว่างbyteและdoubleหรือint ในกรณีนี้ อาจเหมาะสมกว่าที่จะเลือก int ถ้าคุณไม่ต้องการความแม่นยําระดับต่ํากว่าระดับสี และ double ถ้าคุณต้องการความแม่นยําระดับต่ํากว่าระดับสี

เลือกชนิดข้อมูลที่ยึดตามผลกระทบกับระบบอื่น

ในบางครั้ง คุณต้องพิจารณาว่าแอปพลิเคชันอื่นหรือระบบอื่น ๆ เช่น ฐานข้อมูลจะนําข้อมูลไปใช้อย่างไร ตัวอย่างเช่น ระบบชนิดของ SQL Server จะแตกต่างจากระบบชนิดของ C# ด้วยเหตุนี้ การแมปบางอย่างระหว่างทั้งสองจะต้องเกิดขึ้นก่อนที่คุณจะสามารถบันทึกข้อมูลลงในฐานข้อมูลนั้นได้

ถ้าวัตถุประสงค์ของแอปพลิเคชันของคุณคืออินเทอร์เฟซกับฐานข้อมูล จากนั้นคุณอาจต้องพิจารณาว่าข้อมูลถูกจัดเก็บอย่างไรและจัดเก็บข้อมูลไว้เท่าใด ตัวเลือกของชนิดข้อมูลที่มีขนาดใหญ่กว่าอาจส่งผลกระทบต่อจํานวน (และต้นทุน) ของที่เก็บข้อมูลจริงที่จําเป็นในการจัดเก็บข้อมูลทั้งหมดที่แอปพลิเคชันของคุณจะสร้าง

หากไม่แน่ใจให้ยึดตามพื้นฐาน

ในขณะที่คุณดูข้อควรพิจารณาหลายอย่างเมื่อคุณเริ่มต้นเพื่อความง่ายคุณควรชอบชุดย่อยของชนิดข้อมูลพื้นฐานรวมถึง:

  • int สําหรับจํานวนเต็มส่วนใหญ่
  • decimal สําหรับตัวเลขที่แสดงเงิน
  • bool สําหรับค่าจริงหรือเท็จ
  • string สําหรับค่าพยัญชนะผสมตัวเลข

เลือกชนิดที่ซับซ้อนเป็นพิเศษสําหรับสถานการณ์พิเศษ

อย่าสร้างชนิดข้อมูลใหม่ถ้ามีชนิดข้อมูลอย่างน้อยหนึ่งชนิดอยู่แล้วเพื่อวัตถุประสงค์ที่กําหนด ตัวอย่างต่อไปนี้ระบุตําแหน่งที่ชนิดข้อมูล .NET เฉพาะจะมีประโยชน์:

  • byte: ทํางานกับข้อมูลที่เข้ารหัสที่มาจากระบบคอมพิวเตอร์อื่นๆ หรือใช้ชุดอักขระที่แตกต่างกัน
  • double: ทํางานกับวัตถุประสงค์ทางเรขาคณิตหรือทางวิทยาศาสตร์ double ใช้บ่อยเมื่อสร้างเกมที่เกี่ยวข้องกับการเคลื่อนไหว
  • System.DateTime สําหรับค่าวันที่และเวลาที่เฉพาะเจาะจง
  • System.TimeSpan สําหรับช่วงของปี / เดือน / วัน / ชั่วโมง / นาที / วินาที / มิลลิวินาที

สรุป

มีข้อควรพิจารณาเมื่อเลือกชนิดข้อมูลสําหรับโค้ดของคุณและมักจะมากกว่าหนึ่งตัวเลือก คิดผ่านตัวเลือกของคุณ และเว้นแต่ว่าคุณมีเหตุผลที่ดี พยายามยึดติดกับชนิดพื้นฐานเช่น int, decimal, stringและbool