This article is currently in the process of being translated into Thai (~99% done).
Variables
ตัวแปร (variable) ในการเขียนโค้ด เหมือนเป็นที่ๆเราเอาไว้เก็บค่าต่างๆ เอาไว้ใช้เวลาเราต้องการ ใน C# จะเขียนแบบนี้
<ชนิดของตัวแปร> <ชื่อ>;
ตัวอย่าง:
string name;
นี่คือรูปแบบของตัวแปรขั้นพื้นฐาน ตัวแปรนี้ก็ยังไม่ได้เก็บค่าให้ เราจะตั้งค่าให้ตัวแปรได้ดังนี้
<data type> <name> = <value>;
ถ้าตัวแปรนี้ยังไม่ได้ตั้งค่าว่าเอาไปใช้งานในส่วนของ class ที่กำลังทำงานอยู่ (local) เราต้องใส่ค่าให้ด้วยว่า มันควรจะสามารถเอาไปใช้งานได้ที่ไหนบ้าง เช่น ทำงานได้เฉพาะใน class (class member variable)
<ใช้งานได้ที่ไหน> <ชนิดของตัวแปร> <ชื่อ> = <ตั้งค่า>;
ตัวอย่าง:
private string name = "John Doe";
การตั้งค่าว่าเอาตัวแปรไปใช้งานได้ที่ไหน (visibility) จะอธิบายอยู่ในบท class เรามาดูตัวอย่างของตัวแปรด้านล่าง
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string firstName = "John";
string lastName = "Doe";
Console.WriteLine("Name: " + firstName + " " + lastName);
Console.WriteLine("Please enter a new first name:");
firstName = Console.ReadLine();
Console.WriteLine("New name: " + firstName + " " + lastName);
Console.ReadLine();
}
}
}
บางส่วนเราได้เคยอธิบายไปแล้ว คราวนี้้เราจะมาอธิบายในส่วนที่น่าสนใจ เราได้สร้างตัวแปรขึ้นมา เป็นประเภท string คือข้อความ แล้วเราก็ต้องการที่จะให้ output เป็นข้อความที่เราได้สร้างตัวแปรเอาไว้ เราจะใช้ + เป็นการรวบรวมข้อความต่างๆเข้าด้วยกัน
ต่อไปเราจะให้ผู้ใช้ใส่ข้อความใหม่ ในที่นี้คือ ชื่อ เราใช้ ReadLine() ในการอ่าน intput ของผู้ใช้ แล้วใส่ค่าเข้าไปในตัวแปรที่ชื่อ firstName เมื่อกด enter ค่า firstName ที่ใส่เข้าไปใหม่ จะเข้าไปเก็บอยู่ในตัวแปร นี่คือ feature สำคัญในการเปลี่ยนค่าในระหว่าง runtime (โปรแกรมทำงาน ที่กำลังประมวลผล)
ตัวอย่างต่อไปเป็นการคำนวณทางคณิตศาสตร์
int number1, number2;
Console.WriteLine("Please enter a number:");
number1 = int.Parse(Console.ReadLine());
Console.WriteLine("Thank you. One more:");
number2 = int.Parse(Console.ReadLine());
Console.WriteLine("Adding the two numbers: " + (number1 + number2));
Console.ReadLine();
เราจะมาใส่ตัวอย่างด้านบนลงใน Main method ของเรา สิ่งใหม่ที่เราจะเรียนคือ int.Parse() มันคือการนำค่า string มาเปลี่ยนเป็น integer ข้อควรระวัง ถ้าเราใส่ค่าที่ไม่ใช่ตัวเลข จะมี exception (ความผิดพลาด) เกิดขึ้น เพราะเราไม่ได้ validate (ตรวจสอบ) input
Variables & scope
มาถึงตอนนี้เราใช้แต่ตัวแปรแบบ local ซึ่งจะใช้อยู่แค่ใน method เดียวกัน ใน C# ตัวแปรที่ตั้งค่าไว้ใน method จะไม่สามารถใช้นอก method ได้ เพราะฉะนั้นจึงใช้ชื่อว่า local ถ้าใครเคยเขียนโปรเกรมภาษาอื่น จะคุ้นเคยกับ ตัวแปรแบบ global ที่สามารถใช้ได้หลายๆที่ แต่ C# ไม่รองรับ feature นี้ เช่น
using System;
namespace VariableScope
{
class Program
{
private static string helloClass = "Hello, class!";
static void Main(string[] args)
{
string helloLocal = "Hello, local!";
Console.WriteLine(helloLocal);
Console.WriteLine(Program.helloClass);
DoStuff();
}
static void DoStuff()
{
Console.WriteLine("A message from DoStuff: " + Program.helloClass);
}
}
}
ในตัวแปร helloClass ได้ตั้งค่าที่ class แทนที่จะตั้งค่าใน method ซึ่งเราสามารเอาตัวแปรนี้มาใช้ใน Main() method และ DoStuff() ได้ ส่วนตัวแปร helloLocal ที่เราตั้งค่าใน Main() method เราก็สามารถใช้ได้แค่ใน method
ความแตกต่างในการตั้งค่าตัวแปร เราเรียกว่า scoping ซึ่งมันจะทำให้เราจัดการกับตัวแปรได้อย่างเป็นระเบียบไม่ยุ่งยาก และเวลาที่ต้องการจะเปลี่ยนแปลงค่าของตัวแปร ไม่ต้องไปเปลี่ยนหลายๆที่ อีกเทคนิคนึงคือ visibility (ในตัวอย่าง keyword คือ private) ที่จะกล่าวต่อไปในบท class
สรุป
Variable (ตัวแปร) เป็นที่ๆเราเอาไว้เก็บค่าต่างๆ เช่น ข้อความ, ตัวเลข, หรือ อื่นๆแล้วแต่เราจะกำหนด มีตัวแปรชนิด local ที่สามารถใช้ได้แค่ใน method นั้นๆ แล้วยังมีตัวแปรแบบ class field ที่สามารถใช้ได้ทุก method ใน class นั้นๆ และยังสามารถใช้นอก class ได้ ถ้ากำหนด visibility