C# Tutorial ตอนแรก
posted on 04 Jun 2005 04:58 by tidno1 in csharp-and-dotnetสำหรับการจะเขียน C# นั้นเครื่องที่ใช้จำเป็นจะต้องลง .NET Framework ไว้ด้วย เนื่องจากโปรแกรมภาษา C# นั้นต้องรันอยู่บน .NET
เริ่มตอนแรกก็คงจะต้องเริ่มกันจาก editor ที่ใช้เขียนกันก่อน โดยเราสามารถทำได้สองวิธีคือ
- ใช้ editor ธรรมดาอย่างเช่น notepad หรือว่า editplus แล้วเซฟไฟล์เป็นนามสกุล .cs โดยผู้ที่ใช้วิธีนี้ จะต้องลง .NET Framework SDK ด้วย และเมื่อลงแล้วให้ทำการ set path ไปที่ %systemroot%Microsoft.NET\Framework\v1.1.4322;
- วิธีนี้ง่ายกว่า คือการใช้ IDE อย่างเช่น Visual Studio .NET 2003 หรือตัวที่ฟรีอย่าง SharpDevelop(version ล่าสุดขณะเขียนคือ 1.1.0.1964)
โดยตัวอย่างใน tutorial ทั้งหมดนี้จะถูกเขียนใน SharpDevelop ดังนั้น เราจะมาสอนวิธีการใช้งาน SharpDevelop กันก่อน
#Develop Install
หลังจากที่ดาวน์โหลดมาเรียบร้อยแล้ว ให้เรา double click ไฟล์ setup กันได้เลย โดยขั้นตอนการลง ก็ไม่มีอะไรยุ่งยาก หวังว่าคงทำกันเป็น

ก็ให้เลือก Create new code completion database เลยนะครับ จากนั้นก็คลิก Next >
แล้วก็ให้เลือก location ที่จะไว้เก็บไฟล์ โดยผมจะเลือกไว้ที่ Application Directory นะครับ เพื่อความเป็นระเบียบ
แล้วก็อย่าลืมกด
นะครับ หลายคนที่ไม่มี auto complete ขึ้นเพราะว่าลืมกด ปุ่มนี้ แล้วก็บอกว่าโปรแกรมมันค้างแล้วก็ cancel ไป
หลังจากนั้น #Develop จะ restart ตัวเอง เมื่อโปรแกรมถูกเปิดขึ้นมาใหม่แล้ว ให้ไปที่ Tools > Options แล้วไปที่ SharpDevelop options > Projects and Combines และกำหนด Default combine location ซึ่งจะเป็น directory ไว้เก็บ code และ executable file
เริ่มเขียนโปรแกรมแรก
ไปที่ File > New > Combine หรือกด Ctrl + Shift + N แล้วเลือกภาษา C# และกำหนด template เป็น Console Application
โดย #develop จะทำการเติม code ประมาณนี้ให้เรา
using System;
namespace FirstConsoleApplication {
class MainClass {
public static void Main(string[] args) {
Console.WriteLine("Hello World!");
}
}
}
จะอธิบายแต่ละส่วนให้ฟัง คร่าว ๆ ดังนี้
ในส่วนของ using นั้นจะคล้ายกับการ import ในภาษา Java คือ มีไว้สำหรับการรวม namespace ที่จำเป็นต้องใช้ โดยหากบรรทัดนี่เราไม่เขียน เราจะต้องเขียนบรรทัด
Console.WriteLine("Hello World!");
เป็น
System.Console.WriteLine("Hello World!");
namespace,class ไว้อธิบายทีหลัง โดยจำไว้ว่าโปรแกรมของเราจำเป็นจะต้องมีอย่างน้อย 1 class เสมอ
ในภาษา C# นั้น ส่วนหลักของโปรแกรม จะต้องอยู่ในฟังก์ชันที่ชื่อว่า Main เสมอ (คล้ายกับint main() ในภาษา C/C++ หรือบล็อก Begin End. ในภาษา pascal
โดยที่ Main จะต้อง return void เสมอ(voidฟังก์ชัน คือฟังก์ชันที่ไม่มีการส่งค่ากลับ(return) เปรียบได้กับ procedure ในภาษา pascal และ Sub ในภาษา Basic)
static นั้นจะเป็นตัวบอกว่า code นั้นจะอยู่กับ class นั้นเลยโดยไม่ต้องมีการสร้าง instanceของคลาสนั้นขึ้นมาก่อน(ตอนนี้ยังไม่จำเป็นต้องเข้าใจ)
พารามิเตอร์(string[] args) มีไว้รับพารามิเตอร์จากทาง command line โดยรับมาเป็น อาเรย์ของ string เลย(ไม่จำเป็นต้องมี int argc เหมือนอย่างใน C/C++ เพราะ จำนวนของ พารามิเตอร์จะถูกระบุอยู่ใน property ของ args อยู่แล้ว
ให้แก้ code ภายใน class ให้เป็นดังนี้
string name, age;
Console.WriteLine("Hello World!");
Console.WriteLine("This is my first C# application");
Console.Write("What 's your name : ");
name = Console.ReadLine();
Console.Write("Howold are you : ");
age = Console.ReadLine();
Console.WriteLine("Hi {0}\nYou 're {1} years old", name, age);
เมื่อสั่งรันโปรแกรมด้วยการกดปุ่ม
หรือ F5 แล้วจะพบกับหน้าต่างคล้าย ๆ แบบนี้
หากไม่เจอ ให้ไปที่เมนู View > Tools > Console
หรือถ้าใช้ #Develop 1.0.x จะขึ้นเป็น command prompt ของ Windows®
หากเขียนโปรแกรมด้วย Editor ธรรมดา ให้เติม Code นี้ลงไปในโปรแกรม
using System;
class FirstApplication {
public static void Main() {
string name, age;
Console.WriteLine("Hello World!");
Console.WriteLine("This is my first C# application");
Console.Write("What 's your name : ");
name = Console.ReadLine();
Console.Write("Howold are you : ");
age = Console.ReadLine();
Console.WriteLine("Hi {0}\nYou 're {1} years old", name, age);
}
}
จะสังเกตได้ว่า code จะต่างจากด้านบนเล็กน้อย ตรงที่ ไม่มีบรรทัดที่ระบุ namespace และพารามิเตอร์ string[] args นั้นหายไป นั่นเป็นเพราะ 2 อย่างนั้นเป็นสิ่งไม่จำเป็น เรายังไม่ต้องใส่ก็ได้
เมื่อเซฟไฟล์เรียบร้อยแล้ว ให้เปิด command prompt แล้วพิมพ์
csc Main.cs
ได้ไฟล์ Main.Exe มา แล้วก็พิมพ์สั่งรันโดยการพิมพ์ Main จะได้ผลลัพธ์ดังนี้หรือถ้าอยากให้ ได้ชื่อ executable file อย่างอื่น ก็ให้พิมพ์
csc /out:<filename> Main.cs เช่น
csc /out:hello.exe Main.cs
สำหรับตอนต่อไปจะเป็นเรื่องพื้นฐานของภาษา C# เช่นพวก data type และ control statement เช่นพวก if...else หรือคำสั่งที่ใช้วนลูป
อธิบาย code
string name, age; เป็นการประกาศตัวแปรประเภท string(ข้อความ) ชื่อ name และ age
name = Console.ReadLine(); รับค่าตัวแปรมาจาก command line
Console.WriteLine("Hi {0}\nYou 're {1} years old", name, age);
เมื่อรันถึงตรงนี้จะเห็นจากใน output เป็น
You 're 21 years old
นั่นเป็นเพราะว่า ตัวแปร name ซึ่งมีค่าเป็น "TiD" ได้ถูกแทนที่ลงไปในตำแหน่ง {0} และตัวแปร age ซึ่งมีค่าเป็น "21" ได้ถูกแทนที่ลงไปตรง {1} และ "\n" จะถูกเปลี่ยนไปเป็นตัวอักษรขึ้นบรรทัดใหม่ ซึ่ง ทำให้เราเห็น ข้อความนี้ถูกแยกเป็น 2 บรรทัด สังเกตนะครับ การนับเลขในภาษานี้จะเริ่มจาก 0 เสมอ
เราสามารถเขียน code ด้านบนนี้ใหม่เป็น
Console.WriteLine("Hi " + name + "\nYou 're " +age + "years old");
ใครยังไม่เข้าใจก็ลองข้ามไปอ่านตอนที่ 5 ก่อนก็ได้
Escaped Character
'\' (backslash) แล้วตามด้วยตัวอักษรต่าง ๆ จะถูกตีความไปเป็นอักษรพิเศษอื่น ๆ ดังนี้
| Escape character | ความหมาย |
| \n | ตัวอักษรขึ้นบรรทัดใหม่ |
| \t | tab |
| \" | " (เพราะว่าการพิมพ์ " ใน string จะถูกตีความไปเป็นการปิด string) |
| \\ | \ |
การบ้าน
จะให้อ่านอย่างเดียวแล้วไม่ให้ทำอะไรเลยก็ยังไงอยู่
- หากใครสังเกตใน code จะเห็นว่าเราให้ตัวแปร age เป็น string ซึ่งก็หมายความว่า user สามารถใส่ข้อมูลอะไรมาก็ได้ที่ไม่ใช่ตัวเลข ดังนั้นเราจึงจะเปลี่ยนบรรทัดประกาศตัวแปรใหม่ เป็น
string name;
int age;
แล้วลองรันดูว่ามันเกิดอะไรขึ้น - ลองเล่น ๆ อะไรกับ escaped character ดู
Caution : ใครใช้ #Develop 1.1.x ไม่ควรรันโดยใช้ Console ของโปรแกรมนะครับ ให้เข้า command prompt แล้วไปที่ directory ที่เก็บไฟล์ .exe (default เป็น <project path>\bin\debug\ แล้วรันจากในนั้นจะดีกว่า เพราะ Console ของ #Develop 1.1.x มีบั๊กอยู่พอควร หรือ download version 1.0.x มาใช้ดีกว่าครับ #Develop 1.0.3.1768
Tip: กด Ctrl + I ใน #Develop จะเป็นการทำ auto-indent ให้

เย้ ผมจะมาอ่านทุกวันเลย ขอบคุณมาเลยนะครับ
#1 By ลิ่ว on 2005-06-04 11:25