ในที่นี้จะกล่าวถึง data type หรือชนิดของข้อมูล ใน .net (c#)
ปกติเวลาที่เราจะกำหนดชนิดของข้อมูลให้กับตัวแปรเราสามารถกำหนดชนิดข้อมูลให้กับตัวแปรได้เลย
เช่น
int myInt
;
string myStr;
double myDo;
ใน .net
3.0 ได้เพิ่มการกำหนดชนิดของข้อมูลที่ชื่อว่า var ซึ่งในการกำหนดชนิดข้อมูลประเภทนี้จำเป็นจะต้อง
assign ค่าให้กับตัวแปรในตอนที่ประกาศเลย
เช่น
var myvar
=2;
myvar =
myvar +2;
เพราะ var
จำเป็นต้องรู้ว่าตัวแปรที่เราประกาศเป็นชนิดข้อมูลประเภทใดในตอน
complie time
var myvar;
// ถ้าประกาศแบบนี้จะ
error
ฉะนั้นเราสามารถใช้
var ในการกำหนดตัวแปรชนิดใดก็ได้เพียงแต่ต้อง assign ค่าให้ในตอนแรกที่ประกาศและมันจะกลายเป็นชนิดข้อมูลชนิดนั้นไปโดยปริยาย
นอกจากนี้ยังมีแบบ
object ก็เป็นการประกาศตัวแปรอีกแบบหนึ่งซึ่งเป็น
class นั้นเองซึ่งเวลาที่เราจะนำตัวแปรนั้นไปใช้จะเป็นจะต้อง convert
เป็นชนิดที่เราต้องการเสียก่อน
เช่น
object myobj
=10;
ถ้าใช้ myobj =
myobj +2; // แบบนี้จะ error
วิธีใช้ที่ถูกต้อง คือ int summyobj =
int.pase(myobj.tosting())+2; // แบบนี้ผ่านฉลุย
ใน .net 4.0 ได้มีชนิดตัวแปรแบบใหม่ชื่อว่า dynamic ซึ่งมีความสามารถเป็นชนิดข้อมูลใดๆ ก็ได้ เช่น
dynamic
mydic =10;
mydic =
mydic +2; // แบบนี้ไม่ error
เพราะ dynamic
จะคิดชนิดข้อมูลให้กับตัวแปรตอน
runtime (ไม่ได้คิดชนิดข้อมูลตอน compile time)
คราวนี้มาถึงความน่ากลัวแล้ว
จะเห็นว่าตอนที่เราประกาศตัวแปรครั้งแรกเราจะยังไม่รู้ชนิดข้อมูลของตัวแปรแต่เราจะมากำหนดอีกที่ตอน
runtime จากตัวอย่างก่อนหน้า
ถ้าให้
mydic =”myname”; // ซึ่งเปลี่ยนชนิดข้อมูลให้กับตัวแปรจาก int
เป็น
string
แล้วเผลอกลับมาใช้ชนิดข้อมูลก่อนหน้า (int) แล้วจะเกิดอะไรขึ้นถ้า
mydic = mydic +1; // แบบนี้ error
แน่นอน
เพราะ dynamic
สามารถกำหนดชนิดข้อมูลในขณะ
runtime
ดังนั้นเวลาที่จะเลือกใช้ชนิดข้อมูลให้กับตัวแปรจำเป็นต้องคิดให้ดี ๆ
ก่อนลงมือครับ ...
แสดงความคิดเห็น