วิธีที่มีประสิทธิภาพที่สุดในการทดสอบประเภทของอ็อบเจ็กต์ใน C#
เมื่อจัดการกับข้อมูลที่นำเข้าจากแหล่งภายนอก มักจะพบค่าที่ถูกเก็บเป็นสตริงใน DataTable
ปัญหาจะเกิดขึ้นเมื่อคุณต้องการระบุว่าค่าสตริงเหล่านี้แท้จริงแล้วแทนจำนวนเต็ม, จำนวนแบบทศนิยม หรือยังคงเป็นเพียงสตริง ในบริบทของ C# คุณอาจสงสัยว่า: วิธีที่มีประสิทธิภาพที่สุดในการกำหนดประเภทเหล่านี้คืออะไร?
บล็อกโพสต์นี้จะสำรวจวิธีการต่าง ๆ สำหรับการทดสอบประเภทอ็อบเจ็กต์และแนะนำวิธีที่ดีที่สุดสำหรับประสิทธิภาพในแอปพลิเคชันของคุณ
ความท้าทาย
คุณอาจมีสตริงที่ดูเหมือนตัวเลข แต่คุณไม่แน่ใจเกี่ยวกับประเภทที่แท้จริงของพวกมัน ตัวอย่างเช่น:
- “123” อาจเป็น
int
- “123.45” อาจเป็น
double
- “hello” เป็นเพียง
string
คุณต้องการทดสอบค่าเหล่านี้อย่างมีประสิทธิภาพและเชื่อถือได้เพื่อให้แน่ใจว่าแอปพลิเคชันของคุณจัดการกับข้อมูลได้อย่างถูกต้อง
ตัวเลือกที่ควรพิจารณา
-
วิธี Try-Catch:
- คุณสามารถลองแปลงสตริงเป็น
int
ก่อน และถ้าล้มเหลว (เกิดข้อยกเว้น) ให้ลองแปลงเป็นdouble
- หากการแปลงสำเร็จ คุณจะคืนค่า
true
หากการแปลงใดๆ ล้มเหลว คุณจะคืนค่าfalse
วิธีนี้ ถึงแม้ว่าจะตรงไปตรงมา แต่สามารถกลายเป็นสิ่งที่ไม่มีประสิทธิภาพเนื่องจากภาระของการจัดการข้อยกเว้น
- คุณสามารถลองแปลงสตริงเป็น
-
การแสดงออกปกติ:
- อีกวิธีหนึ่งคือการใช้การแสดงออกปกติ (regex) เพื่อตรวจจับรูปแบบสำหรับ
int
และdouble
- วิธีนี้อาจเกี่ยวข้องกับการสร้างรูปแบบเฉพาะสำหรับทั้งสองประเภทและตรวจสอบสตริงกับพวกมัน
- อีกวิธีหนึ่งคือการใช้การแสดงออกปกติ (regex) เพื่อตรวจจับรูปแบบสำหรับ
-
วิธีการแยกวิเคราะห์ที่ปรับปรุงแล้ว:
- การใช้
double.TryParse
เป็นทางเลือกที่แนะนำที่มีประสิทธิภาพมากกว่า - วิธีนี้จะพยายามแปลงสตริงเป็น double แต่ทำเช่นนี้โดยไม่ใช้ภาระของการจัดการข้อยกเว้น
- การใช้
ทำไม double.TryParse
จึงเป็นวิธีที่ต้องการ
การใช้ double.TryParse
มีข้อได้เปรียบหลายประการ:
-
ประสิทธิภาพ: แตกต่างจากวิธี try-catch,
double.TryParse
ไม่พึ่งพาข้อยกเว้นในการควบคุมการไหล สิ่งนี้ทำให้มันเร็วขึ้นอย่างมีนัยสำคัญ โดยเฉพาะเมื่อประมวลผลชุดข้อมูลขนาดใหญ่ -
ความยืดหยุ่น: หากสตริงแทนจำนวนเต็ม (
int
) มันยังสามารถถูกแปลงเป็นdouble
โดยไม่มีปัญหา ดังนั้นวิธีเดียวสามารถตรวจสอบทั้งสองประเภทได้ ลดความซับซ้อนในโค้ดของคุณ -
โค้ดที่สะอาด: การใช้
TryParse
สร้างโค้ดที่สะอาดและสามารถบำรุงรักษาได้ง่ายขึ้น เนื่องจากมันหลีกเลี่ยงความยุ่งเหยิงจากการจัดการข้อยกเว้น
วิธีการใช้งาน double.TryParse
ต่อไปนี้เป็นตัวอย่างง่ายๆ ของวิธีการใช้งานใน C#:
public bool IsNumeric(string value)
{
double number;
return double.TryParse(value, out number);
}
public (bool isInt, bool isDouble) CheckType(string value)
{
return (int.TryParse(value, out _), double.TryParse(value, out _));
}
ในตัวอย่างนี้:
IsNumeric
ตรวจสอบว่าค่าสามารถถูกแปลงเป็น double ได้หรือไม่CheckType
ให้คู่ค่าบ่งชี้ว่าค่านั้นเป็นint
หรือdouble
สรุป
เมื่อทำงานกับข้อมูลสตริงที่อาจแทนประเภทตัวเลขใน C# การเลือกใช้ double.TryParse
มอบการผสมผสานของประสิทธิภาพ, ความชัดเจน, และความยืดหยุ่น โดยหลีกเลี่ยงปัญหาจากการจัดการข้อยกเว้นและความซับซ้อนของ regex คุณสามารถกำหนดประเภทของสตริงใน DataTable
ได้อย่างมีประสิทธิภาพ ทำให้แน่ใจว่าแอปพลิเคชันของคุณทำงานอย่างราบรื่นและมีประสิทธิผล
หากคุณกำลังมองหาการปรับปรุงตรรกะการตรวจสอบประเภทของคุณ ลองใช้ double.TryParse
ดูสิ!