Page cover image

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ตัวขึ้นไป)

ตัวอย่างโค้ตการใช้งาน:

int age = 25;           // ตัวแปรชนิด int ที่ชื่อว่า age และมีค่าเริ่มต้นเป็น 25
string name = "John";   // ตัวแปรชนิด string ที่ชื่อว่า name และมีค่าเริ่มต้นเป็น "John"
double price = 99.99;   // ตัวแปรชนิด double ที่ชื่อว่า price และมีค่าเริ่มต้นเป็น 99.99

ชนิดข้อมูล (Data Type): ต้องกำหนดชนิดข้อมูลเมื่อประกาศตัวแปร เช่น int, string, float, bool เป็นต้น

Dynamicคืออะไร?

เป็นประเภทข้อมูล (data type) ที่ถูกเพิ่มเข้ามาในเวอร์ชัน 4.0 ซึ่งใช้ในการประกาศตัวแปรที่ชนิดของข้อมูลจะถูกตรวจสอบใน runtime แทนที่จะเป็น compile-time

โดยทั่วไปแล้ว เมื่อใช้ dynamic จะไม่จำเป็นต้องบอกชนิดของตัวแปรในขณะที่เขียนโปรแกรม แต่ตัวแปรนี้จะสามารถเปลี่ยนชนิดของข้อมูลได้ในขณะที่รันโปรแกรม ซึ่งจะเป็นประโยชน์ในกรณีที่เราไม่สามารถทราบชนิดของข้อมูลล่วงหน้า

ตัวอย่างโค้ตการใช้งาน:

dynamic myVar = 10;
Console.WriteLine(myVar);  // Output: 10

myVar = "Hello";
Console.WriteLine(myVar);  // Output: Hello

myVar = DateTime.Now;
Console.WriteLine(myVar);  // Output: 10/04/2024 09:00:00 AM (ขึ้นกับวันที่และเวลา)

เราเห็นได้ว่า myVar สามารถเก็บค่าของตัวเลข, สตริง, หรือแม้แต่วันที่และเวลา โดยไม่ต้องประกาศชนิดข้อมูลล่วงหน้า ซึ่งเป็นประโยชน์ในบางกรณี เช่น การทำงานกับข้อมูลที่มาจากภายนอกที่ไม่แน่นอน

สรุปความแตกต่างของVarและDynamic

  • ใช้ var เมื่อรู้ชนิดข้อมูลล่วงหน้าและต้องการความปลอดภัยในเรื่องชนิดข้อมูล

  • ใช้ dynamic เมื่อต้องการยืดหยุ่นในการเปลี่ยนชนิดข้อมูลระหว่างรันไทม์

เปรียบเทียบกับภาษาC

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

// กำหนดชนิดข้อมูลโดยตรงเป็น int
int number = 10;
printf("Number (int): %d\n", number);
// ไม่สามารถเปลี่ยนชนิดข้อมูลในภายหลังได้
// number = "text"; // จะเกิดข้อผิดพลาดในเวลาคอมไพล์
return 0;

ใน ภาษาC ตัวแปรจะมีชนิดข้อมูลที่แน่นอนและไม่สามารถเปลี่ยนได้ในระหว่างโปรแกรม

เปรียบเทียบกับภาษาJava

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

// var (ตั้งแต่ Java 10) - ชนิดข้อมูลถูกกำหนดในเวลาคอมไพล์
var number = 10; // number เป็น int
System.out.println("Number (var): " + number);

// แต่ไม่สามารถเปลี่ยนชนิดข้อมูลได้

หากลองรันโดย number = "Hello World"; // จะเกิดข้อผิดพลาดที่คอมไพล์ทันที

JAVA

เปรียบเทียบกับภาษาPython

ใน Python ตัวแปรทั้งหมดเป็นdynamic ไม่มีการกำหนดชนิดข้อมูลที่แน่นอน ชนิดของตัวแปรสามารถเปลี่ยนแปลงได้ในระหว่างรันไทม์

# ตัวแปรสามารถเปลี่ยนชนิดได้โดยอัตโนมัติ
number = 10
print("Number (int):", number)

# เปลี่ยนตัวแปรเป็นสตริงได้
number = "GeeksforGeeks"
print("Number (string):", number)

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

คลิปนำเสนอ

Presentation (slides)

แหล่งที่มาอ้างอิง

เปรียบเทียบความแตกต่างของvar and dynamic in C# :

ankita_saini.30/05/2024.Difference between var and dynamic in C#.

ข้อมูลเกี่ยวกับVariable:

Variables

ข้อมูลเกี่ยวกับDynamicคือ:

Datatype

ข้อมูลเพิ่มเติม:

เปรียบเทียบความแตกต่างกับภาษาC:

MarcusCode.27/06/2015.ตัวแปรและประเภทข้อมูล.

ตัวแปรและประเภทข้อมูลในภาษาC

เปรียบเทียบความแตกต่างกับภาษาJava:

MarcusCode.15/08/2016.ตัวแปรและประเภทข้อมูล.

ตัวแปรและประเภทข้อมูลในภาษาJava

เปรียบเทียบความแตกต่างกับภาษาPython:

MarcusCode.15/08/2016.ตัวแปรและประเภทข้อมูล.

ตัวแปรและประเภทข้อมูลในภาษาPython

Last updated