วันอังคารที่ 19 มีนาคม พ.ศ. 2556

ตัวแปร และชนิดของตัวแปรในภาษา VB และ C#


การใช้ตัวแปรและชนิดของตัวแปร
ภาษา C# และ VB.NET นั้นเป็นภาษาที่เข้มงวดเรื่องชนิดของตัวแปร (Strongly Typed Programming Language) นั่นหมายความว่า คุณจะไม่สามารถใช้ตัวแปรชนิดที่เป็นตัวอักษร มาเก็บค่าที่เป็นตัวเลข หรือใช้ตัวแปรที่เก็บตัวเลขจำนวนเต็ม มาเก็บเลขทศนิยม หรือว่าบวกตัวแปรที่เป็นตัวเลข กับค่าคงที่ที่เป็นข้อมูลตัวอักษรได้ อย่างที่คุณอาจจะเคยทำได้ในภาษา Visual Basic ด้วยการใช้ตัวแปรชนิด Variant หรือไม่กำหนด Type ของตัวแปรเลย ในขั้นตอนการประกาศตัวแปร
การที่ผู้ออกแบบภาษากำหนดให้มีความเข้มงวดกับชนิดของตัวแปรก็เพื่อให้คอมไพเลอร์ สามารถวิเคราะห์โค้ด และคาดการณ์ล่วงหน้าได้ถึงความผิดพลาดที่จะเกิดขึ้นจากการใช้ตัวแปรเพื่อเก็บข้อมูลผิดประเภทในขณะที่ทำการคอมไพล์โค้ด ซึ่งถ้าหากว่าภาษาอนุญาตให้มีการใช้ตัวแปรเก็บค่าใดๆ ก็ได้ ความผิดพลาดที่จะเกิดขึ้นได้ก็จะรู้ได้ต่อเมื่อโปรแกรมกำลังทำงานอยู่เท่านั้น ทำให้เสถียรภาพของโปรแกรมลดลง เนื่องจากความผิดพลาดอาดเร็ดรอดจากการตรวจสอบไปได้ แต่ประโยชน์ที่สำคัญที่สุดของ Strong Typing ก็คือ ตัวภาษาไม่จำเป็นต้องมีขั้นตอนในการตรวจสอบชนิดของตัวแปร และแปลงข้อมูลของตัวแปรกลับไป กลับมาในขณะที่โปรแกรมกำลังทำงาน จึงทำให้ประสิทธิภาพโดยรวมของโปรแกรมนั้นสูงขึ้น
สำหรับประเภทของตัวแปรพื้นฐานในภาษา C# และ VB.NET นั้น มีอยู่ด้วยกัน ดังตารางที่ 2-1 นี้
Type
(C#)
Type (VB.NET)พื้นที่ในการ
เก็บข้อมูล (บิต)
ช่วงของข้อมูลที่สามารถเก็บได้
sbyteSByte8–128 ถึง 127
shortShort16–32,768 ถึง 32,767
intInteger32–2,147,483,648 ถึง 2,147,483,647
longLong64–9,223,372,036,854,775,808 ถึง
9,223,372,036,854,775,807
byteByte80 ถึง 255
ushortUShort160 ถึง 65,535
uintUInteger320 ถึง 4,294,967,295
ulongULong640 ถึง 18,446,744,073,709,551,615
floatSingle321.5 × 1045 ถึง 3.4 × 1038 มีทศนิยมได้ 7 ตำแหน่ง
doubleDouble645.0 × 10324 ถึง 1.7 × 10308 มีทศนิยมได้ 15 ตำแหน่ง
decimalDecimal1281.0 × 1028 ถึง 7.9 × 1028 มีทศนิยมได้ 28 ตำแหน่ง
DateTime(ไม่มีคียเวิร์ด)Date64เที่ยงคืนของวันที่ 1 มกราคม ค.ศ. 1 ถึง 23:59:59 ของวันที่ 31 ธันวาคม ค.ศ. 9999
charChar160 ถึง 65,535 ใช้เก็บตัวอักษรในแบบ Unicode จำนวน 1 ตัวอักษร
boolBoolean1true และ false
stringString32++ข้อมูลตัวอักษรแบบ Unicode ได้สูงสุด 2,147,483,647 ตัวอักษร
o
bject
Object32++ข้อมูลประเภท Object
ตารางที่ 2-1 ชนิดของตัวแปรมาตรฐานใน C#
ตัวแปรทั้งหมด ยกเว้น 2 ชนิดสุดท้าย เป็นตัวแปรประเภท Value Type หรือ ตัวแปรที่เก็บข้อมูลอยู่ในตัวเองโดยตรง แต่สำหรับตัวแปรชนิด string และ object นั้น เป็นตัวแปรประเภท Reference Type ที่ทำหน้าที่เก็บ Link ไปยังข้อมูลจริง ที่ถูกเก็บไว้ในหน่วยความจำอีกส่วนหนึ่ง ซึ่งตัวแปรประเภท Reference Type นี้ จะใช้เก็บข้อมูลประเภท Object ซึ่งผู้เขียนจะกล่าวถึงอีกครั้งหนึ่ง ในส่วนของ Object Oriented Programming
การประกาศใช้ตัวแปร แบบพื้นฐานสามารถทำได้โดยใช้คำสั่งในลักษณะ ชื่อ Type ตามด้วยชื่อตัวแปร ดังนี้
  C#
Int     a      = 0;
string  b      = “The String”;
(ชนิดตัวแปร)   (ชื่อตัวแปร)   =              (ค่าเริ่มต้น);
      ส่วน VB.NET นั้น ยังคงใช้รูปแบบเดิม คือ Dim ตามด้วยชื่อตัวแปร As ตามด้วย Type ของตัวแปร คล้ายกับคำพูดว่า “ประกาศ a เป็น Integer” หรือ “ประกาศ B เป็น String” ดังนี้
  VB
Dim     a      As Integer = 0
Dim     b      As String  = “The String”;
                         (ชื่อตัวแปร)            (ชนิดตัวแปร) (ค่าเริ่มต้น);

สำหรับการตั้งชื่อตัวแปร หรือ Identifier นั้น มีข้อจำกัดอยู่เพียง 3 ประการคือ
·        ชื่อตัวแปรจะต้องขึ้นต้นด้วยตัวอักษร หรือสัญลักษณ์ Underscore (‘_’) เท่านั้น
·        สัญลักษณ์ที่สามารถใช้ได้ในการตั้งชื่อ คือเครื่องหมาย Underscore (‘_’) เท่านั้น
·        ไม่สามารถตั้งชื่อซ้ำกับคีย์เวิร์ดได้ เช่น ตัวแปรชื่อ if
Tip:
สำหรับ C# นั้น ถ้าหากมีความจำเป็นที่จะต้องใช้ชื่อซ้ำกับคีย์เวิร์ดจริงๆ คุณสามารถใช้เครื่องหมาย @ นำหน้า ก็จะสามารถใช้ชื่อคีย์เวิร์ดนั้นเป็นชื่อตัวแปรได้ เช่น object @object;

ควรตั้งชื่อตัวแปรอย่างไรจึงจะเหมาะสม?
ในการตั้งชื่อตัวแปรนั้น ไม่มีกฏเกณ์ที่ตายตัว และมีรูปแบบการตั้งชื่อได้หลายแบบ คุณสามารถเลือกใช้ชื่อใดก็ได้ที่เหมาะสม ตราบใดที่ชื่อนั้นไม่ผิดข้อจำกัดทั้ง 3 ข้อที่ผู้เขียนได้กล่าวถึงไปแล้ว สำหรับทางไมโครซอฟท์เอง ก็ได้มีการร่างคำแนะนำในการตั้งชื่อเอาไว้ด้วย เพื่อให้เกิดเอกลักษณ์ในการตั้งชื่อสำหรับโปรแกรมที่พัฒนาบนแพลตฟอร์ม .NET ซึ่งหลักเกณฑ์คร่าว ๆ ตามคำแนะนำดังกล่าว ได้แก่:
·        ใช้ชื่อที่สื่อความหมาย และไม่ใช้ตัวย่อ เช่น
Num ควรใช้ชื่อว่า number
Idx ควรใช้ชื่อว่า Index
passwd ควรใช้ชื่อว่า Password
i ควรใช้ชื่อว่า index (แต่ในความเป็นจริงแล้ว เรามักจะยังใช้กันอยู่)
แต่สำหรับตัวย่อ ID และ OK นั้น อนุญาตให้สามารถใช้ได้
·        สามารถใช้ชื่อที่ยาวกว่า 1 คำได้ แต่คำแรกจะต้องเป็นตัวอักษรตัวเล็กทั้งหมด และเมื่อขึ้นต้นคำใหม่ ให้ใช้ตัวอักษรตัวพิมพ์ใหญ่ขึ้นต้น เช่น
Username ควรใช้ว่า userName
thisisvariable ควรใช้ชื่อว่า thisIsVariable
isOK นั้น ควรใช้ชื่อว่า isOk
userID นั้น ควรใช้ชื่อว่า userId
·        ไม่ใช้ควรเครี่องหมาย Underscore ในการแบ่งคำ แทนการใช้ตัวอักษรตัวพิมพ์ใหญ่
total_income ควรใช้ว่า totalIncome
pixel_size ควรใช้ว่า pixelSize
·        ไม่ตั้งชื่อตัวแปรที่แตกต่างกันเพียงตัวอักษรตัวพิมพ์ใหญ่ และตัวพิมพ์เล็ก แม้ว่าภาษา C# นั้นจะถือว่าเป็นตัวแปรคนละตัวกันก็ตาม เช่น ถ้าหากมีตัวแปรชื่อ Number แล้วไม่ควรมี ตัวแปรชื่อ number ซ้ำกัน
      การตั้งชื่อตามคำแนะนำนี้ จะช่วยให้โค้ดที่คุณเขียนไว้อ่านง่ายขึ้น และสามารถทำความเข้าใจได้ง่าย เมื่อคุณต้องการกลับมาแก้ไขในภายหลัง ซึ่งอาจจะเป็นเวลาล่วงเลยไปหลายวัน หรือหลายเดือนไปแล้ว
Array
      Array ใน C# นั้นก็มีลักษณะไม่แตกต่างอะไร จาก Array ในภาษาอื่นๆ ที่สนับสนุนการใช้งาน Array แต่ในด้านของไวยกรณ์นั้น C# ใช้การประกาศ และใช้งาน Array ในลักษณะของตัวเอง ไม่ได้ตามแบบของ Java หรือ C++ เสียทีเดียว ซึ่งไวยกรณ์ในการประกาศใช้ Array นั้น จะมีลักษณะดังนี้
  C#
int [] a  = new int [10];
 (ชนิด) (ชื่อของ Array)                            (ขนาดของ Array);
      สำหรับ VB.NET นั้น ยังคงมีการประกาศในลักษณะเดิม แต่ Index เริ่มต้นของ Array จะเปลี่ยนเป็น 0 แทนที่จะเป็น 1 เหมือนใน VB6 และขนาดของ Array ใน VB.NET นั้นจะเป็นการกำหนดค่า Index สูงสุดของ Array แทนที่จะเป็นขนาดจริง นั่นหมายความว่า ถ้าคุณต้องการ Array ขนาด 10 ช่อง คุณจะต้องใช้ 9 เป็นขนาดของ Array 
  VB
Dim  a(9) as Integer
นอกจากนี้แล้ว สำหรับภาษา C# คุณยังสามารถกำหนดค่าให้กับตำแหน่งต่างๆ ของ Array ได้ทันที ตั้งแต่การประกาศใช้งาน Array โดยการใช้คำสั่งดังนี้
  C#
int [] a  = new int [] {1,2,3};
      ซึ่งจะเป็นการประกาศใช้งาน Array ที่มีขนาด 3 ตำแหน่ง และมีค่า 1, 2 และ 3 ใน 3 ตำแหน่งนั้น ตามลำดับ ถ้าหากว่าคุณไม่ได้กำหนดขนาดของ Array ไว้ ตัว Array ที่ถูกสร้างขึ้น จะมีขนาดเท่ากับจำนวนข้อมูล ที่คุณใส่ไว้ในเครื่องหมายปีกกา แต่ถ้าหากำหนดไว้ คุณก็จะต้องใส่ข้อมูลให้เท่ากับขนาดที่ระบุไว้
สำหรับ VB.NET นั้น ก็สามารถทำการประกาศแบบนี้ได้เช่นเดียวกัน ด้วยคำสั่ง
  VB
Dim a() As Integer = New Integer() {1, 2, 3}
หรือ
Dim a As Integer() = New Integer() {1, 2, 3}
ส่วนการใช้งาน Array ใน C# นั้น จะมีลักษณะคล้ายกับภาษาใน C-Style อื่นๆ คือการใช้ เครื่องหมาย [] (เครื่องหมายBracket) ในการบอกตำแหน่งที่ต้องการเรียกใช้งาน
  C#
int [] a        = new int [10];
       a [9]    = 10;
 (ชื่อของ Array) (ตำแหน่งที่ต้องการเรียกใช้);
และการใช้งาน Array ของ VB.NET นั้น ก็ยังคงใช้เครื่องหมาย วงเล็บ ‘()’ เช่นเดียวกับใน VB6
  VB
Dim a As Integer() = New Integer(9) {}
a(9) = 10
(ชื่อของ Array) (ตำแหน่งที่ต้องการเรียกใช้);

1 ความคิดเห็น:

rafaeliajahmela กล่าวว่า...

Casino | Hollywood Casino in St. Louis
Come out and 파주 출장마사지 play 논산 출장안마 at the best Hollywood Casino in St. 서울특별 출장안마 Louis, Missouri. 나주 출장마사지 We offer over 1300 slot machines, 40 table games and multiple live entertainment 안산 출장안마 venues.