Var VS Dynamic in type C#
พรรณรมน เอกรัตนเวศน์ 650710087
เปรียบเทียบระหว่าง Variable กับ Dynamic ว่ามีความแตกต่างกันแบบไหนและใช้งานต่างกันอย่างไร โดยVar เป็นฟีเจอร์ที่ถูกเพิ่มเข้ามาใน V3.0 และ Dynamic ใน C# เป็นฟีเจอร์ที่ถูกเพิ่มเข้ามาใน V4.0

Var(Variable)คืออะไร?
variable (ตัวแปร) คือพื้นที่ในหน่วยความจำที่ถูกกำหนดชื่อและประเภทข้อมูล ซึ่งใช้สำหรับเก็บข้อมูลที่จะนำไปใช้งานในโปรแกรม ตัวแปรใน C# จะต้องมีการประกาศชนิดข้อมูล (data type) ก่อนที่จะใช้งาน เช่น int(จำนวนเต็ม) , long (จำนวนเต็ม) , float(ทศนิยม6-7หลัก) , double(ทศนิยม15หลัก) , bool {จริง (true) หรือ เท็จ (false)} , char(อักษร1ตัว) , string(อักษร2ตัวขึ้นไป)
ตัวอย่างโค้ตการใช้งาน:
ชนิดข้อมูล (Data Type): ต้องกำหนดชนิดข้อมูลเมื่อประกาศตัวแปร เช่น int, string, float, bool เป็นต้น
Dynamicคืออะไร?
เป็นประเภทข้อมูล (data type) ที่ถูกเพิ่มเข้ามาในเวอร์ชัน 4.0 ซึ่งใช้ในการประกาศตัวแปรที่ชนิดของข้อมูลจะถูกตรวจสอบใน runtime แทนที่จะเป็น compile-time
โดยทั่วไปแล้ว เมื่อใช้ dynamic จะไม่จำเป็นต้องบอกชนิดของตัวแปรในขณะที่เขียนโปรแกรม แต่ตัวแปรนี้จะสามารถเปลี่ยนชนิดของข้อมูลได้ในขณะที่รันโปรแกรม ซึ่งจะเป็นประโยชน์ในกรณีที่เราไม่สามารถทราบชนิดของข้อมูลล่วงหน้า
ตัวอย่างโค้ตการใช้งาน:
เราเห็นได้ว่า myVar
สามารถเก็บค่าของตัวเลข, สตริง, หรือแม้แต่วันที่และเวลา โดยไม่ต้องประกาศชนิดข้อมูลล่วงหน้า ซึ่งเป็นประโยชน์ในบางกรณี เช่น การทำงานกับข้อมูลที่มาจากภายนอกที่ไม่แน่นอน
สรุปความแตกต่างของVarและDynamic
ใช้ var เมื่อรู้ชนิดข้อมูลล่วงหน้าและต้องการความปลอดภัยในเรื่องชนิดข้อมูล
ใช้ dynamic เมื่อต้องการยืดหยุ่นในการเปลี่ยนชนิดข้อมูลระหว่างรันไทม์
เปรียบเทียบกับภาษาC
ในภาษา C (ซึ่งเป็นภาษาที่ไม่มี var
หรือ dynamic แต่C#
มี) การกำหนดชนิดข้อมูลต้องทำโดยตรงและชัดเจนในเวลาคอมไพล์ ไม่มีการเปลี่ยนแปลงชนิดข้อมูลของตัวแปรในระหว่างรันไทม์เหมือนกับการใช้ dynamic
ใน C# ซึ่งหมายความว่าตัวแปรใน C จะมีชนิดที่คงที่ตลอดเวลา
ใน ภาษาC ตัวแปรจะมีชนิดข้อมูลที่แน่นอนและไม่สามารถเปลี่ยนได้ในระหว่างโปรแกรม

เปรียบเทียบกับภาษาJava
ใน Java ไม่มีการรองรับ dynamic
หรือ var
โดยตรง (เวอร์ชันเก่า) แต่ตั้งแต่ Java 10 เป็นต้นไปมีการใช้ var
ซึ่งชนิดของตัวแปรจะถูกกำหนดในเวลาคอมไพล์คล้ายกับ var
ใน C#
หากลองรันโดย number = "Hello World"; // จะเกิดข้อผิดพลาดที่คอมไพล์ทันที

เปรียบเทียบกับภาษาPython
ใน Python ตัวแปรทั้งหมดเป็นdynamic ไม่มีการกำหนดชนิดข้อมูลที่แน่นอน ชนิดของตัวแปรสามารถเปลี่ยนแปลงได้ในระหว่างรันไทม์
Python ทุกตัวแปรเป็นไดนามิกตามธรรมชาติ คล้ายกับ dynamic
ใน C# โดยไม่มีต้องการระบุชนิดข้อมูลใดๆ

คลิปนำเสนอ
Presentation (slides)
แหล่งที่มาอ้างอิง
เปรียบเทียบความแตกต่างของvar and dynamic in C# :
ankita_saini.30/05/2024.Difference between var and dynamic in C#.
ข้อมูลเกี่ยวกับVariable:
ข้อมูลเกี่ยวกับDynamicคือ:
ข้อมูลเพิ่มเติม:
เปรียบเทียบความแตกต่างกับภาษาC:
MarcusCode.27/06/2015.ตัวแปรและประเภทข้อมูล.
เปรียบเทียบความแตกต่างกับภาษาJava:
MarcusCode.15/08/2016.ตัวแปรและประเภทข้อมูล.
เปรียบเทียบความแตกต่างกับภาษาPython:
MarcusCode.15/08/2016.ตัวแปรและประเภทข้อมูล.
Last updated