Microsoft มีประวัติที่น่าสนใจในการพัฒนาตนเอง จากการสร้างระบบปฏิบัติการในช่วงแรกๆ บริษัทได้ขยายไปสู่แอปพลิเคชันออฟฟิศ เช่น Word และ Excel และต่อมาคือการเชื่อมต่อกับอินเทอร์เน็ตด้วย Internet Explorer แรงผลักดันหลักที่อยู่เบื้องหลังการสร้าง .NET นั้นเกิดจากความสำเร็จของ Internet และ Java ที่เป็นสภาพแวดล้อมทั่วไปสำหรับการประมวลผลในระดับใหญ่
.NET เป็นเฟรมเวิร์กที่เปิดตัวครั้งแรกโดยมีการกำหนดสองแนวคิดที่สำคัญ แนวคิดแรกคือการสร้างภาษาการเขียนโปรแกรมใหม่ชื่อว่า C# ส่วนแนวคิดที่สองคือการสร้างเฟรมเวิร์กมาตรฐานสำหรับโซลูชัน Windows
การทำความเข้าใจ C# ได้ง่ายที่สุดอาจเป็นการจินตนาการถึงการบันทึกทุกสิ่งที่น่ารำคาญเกี่ยวกับ C++ แล้วออกแบบภาษาใหม่ที่ไม่มีสิ่งเหล่านั้น ใน C++ การจัดการกับพอยน์เตอร์เป็นเรื่องที่ยุ่งยากและมักจะเกิดข้อผิดพลาดที่ไม่ตรวจจับโดยคอมไพเลอร์ เช่น การใช้งานนิพจน์ (if (x = 5)); การจัดการสตริงทำได้ยาก และไม่มีวิธีที่ดีในการ “ดาวน์แคสต์” ออบเจกต์ลงไปในชนิดข้อมูลที่เฉพาะเจาะจง
C# ได้รับการออกแบบใหม่ตั้งแต่พื้นฐาน โดยมีแนวคิดในการรักษาความยืดหยุ่นของ C และ C++ ในขณะที่สร้างระบบชนิดข้อมูลและไวยากรณ์ของภาษาให้เป็นทางการมากขึ้น ข้อผิดพลาดที่พบใน C++ หลายครั้งเป็นข้อผิดพลาดใน C# ฟีเจอร์อื่นๆ ที่โดดเด่นรวมถึงการมีระบบการจัดการสตริงในตัว การไม่มีตัวแปรทั่วไป และการรวมระบบข้อยกเว้นของแอปพลิเคชันเข้าด้วยกันในแบบจำลองข้อยกเว้นทั่วไป
ส่วนผนวก A ของหนังสือเล่มนี้ให้ภาพรวมของไวยากรณ์ คำหลัก และฟีเจอร์ของภาษา C# ในส่วน “มีอะไรใหม่ใน 2.0” ซึ่งจะกล่าวถึงในภายหลังของการแนะนำนี้จะสรุปการเปลี่ยนแปลงที่ทำขึ้นสำหรับการปล่อย .NET Framework เวอร์ชัน 2.0
.NET Framework มอบแนวคิดร่วมกันสำหรับเทคโนโลยีและสภาพแวดล้อมการพัฒนาของ Microsoft ที่ได้พัฒนามาในช่วงหลายปีที่ผ่านมา นอกจากประโยชน์ในด้านภาพลักษณ์ของแบรนด์ .NET ที่ทำให้บริษัทมีทิศทางที่ชัดเจนแล้ว ยังมีประโยชน์ทางเทคนิคที่สำคัญอีกด้วย โดย .NET Framework เป็นสภาพแวดล้อมในการรันแอปพลิเคชันบนแพลตฟอร์ม Windows
ในขณะที่ Java เป็นสภาพแวดล้อมสำหรับการรันโปรแกรมที่เขียนด้วยภาษาเดียวกันบนระบบปฏิบัติการใดๆ ก็ตาม .NET Framework เป็นสภาพแวดล้อมสำหรับการรันโปรแกรมที่เขียนด้วยภาษาใดก็ได้บนระบบปฏิบัติการเดียว ไม่ได้บอกว่าอันไหนดีกว่ากัน แค่ชี้ให้เห็นว่าเป้าหมายพื้นฐานของ Java และ .NET นั้นต่างกัน
.NET Framework จัดกลุ่มเนื้อหาเป็น namespaces แนวคิดนี้ถูกอธิบายในบทที่ 1 โดยที่ namespaces จะกำหนดกลุ่มของคลาสและชนิดข้อมูลที่มีความคล้ายคลึงกัน สำหรับสรุปของ namespaces ที่รองรับโดย .NET Framework ให้ดูที่ภาคผนวก B ของหนังสือเล่มนี้
Namespaces ช่วยกำหนดโครงสร้างให้กับจำนวนวัตถุที่มีมากมายใน .NET Framework และในกรณีของหนังสือเล่มนี้จะให้แนวทางและความสำคัญในการเขียนหนังสือ โดยจะเน้นที่ namespace System.Windows.Forms
ซึ่งเป็นที่รู้จักกันในชื่อ Windows Forms
แอปพลิเคชัน Windows Forms เป็นโปรแกรมที่รันบนระบบปฏิบัติการ Windows ซึ่งใช้ส่วนติดต่อผู้ใช้ที่คุ้นเคยกับผู้ใช้เดสก์ท็อป Windows
หนังสือเล่มนี้พยายามเสนอแนวทางที่เป็นระบบต่อ Windows Forms ซึ่งส่วนใหญ่ของชนิดข้อมูลที่กำหนดโดย namespace นี้จะถูกครอบคลุม ภาคผนวก C ให้แผนภาพ class diagram ของ namespace Windows Forms และมีการอ้างอิงไปยังตารางหรือส่วนที่มีการพูดถึงแต่ละคลาสหรือชนิดข้อมูล
Listing 1.1 ฟอร์มแรกของเรา
[assembly: System.Reflection.AssemblyVersion("1.0")]
namespace MyNamespace
{
public class MyForm : System.Windows.Forms.Form
{
public MyForm()
{
this.Text = "Hello Form";
}
[System.STAThread]
public static void Main()
{
System.Windows.Forms.Application.EnableVisualStyles();
System.Windows.Forms.Application.Run(new MyForm());
}
}
}
เพื่อคอมไพล์โปรแกรมนี้ เราใช้คอมไพเลอร์ C# ซึ่งเรียกว่า csc
(C Sharp Compiler) โดยต้องใช้หน้าต่างคำสั่งที่มีการตั้งค่าตัวแปร PATH เพื่อเข้าถึงโปรแกรมและไลบรารีของ .NET Framework สามารถกำหนดการตั้งค่าเหล่านี้ด้วยตนเองหรือใช้ทางลัดที่ Microsoft ให้มาได้ ทางลัดนี้สามารถเข้าถึงได้ผ่านเมนู Start
ในการเข้าถึงทางลัดนี้ ให้คลิก Start > Programs > Microsoft .NET Framework SDK v2.0 > SDK Command Prompt เมื่อหน้าต่างคำสั่งเปิดขึ้น จะมีการดำเนินการคำสั่ง batch และกำหนดตัวแปรที่เหมาะสม โดยไดเรกทอรีการติดตั้งเริ่มต้นจะดำเนินการคำสั่งต่อไปนี้
cmd /k "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sdkvars.bat"
เปิด .NET Framework SDK command prompt และเปลี่ยนไปที่ไดเรกทอรีที่มีไฟล์ MyForm.cs ของคุณ จากนั้นคอมไพล์โปรแกรมนี้ด้วยคำสั่ง:
csc MyForm.cs /reference:System.dll /reference:System.Windows.Forms.dll
สวิตช์ /reference
ระบุไลบรารีที่มีฟังก์ชันเพิ่มเติมสำหรับโปรแกรม ใน .NET ไลบรารีรวมถึงโปรแกรมจะถูกเรียกว่าการรวมกันเป็น assemblies ในแอปพลิเคชันนี้ เราอ้างอิง assemblies System (System.dll) และ Windows Forms (System.Windows.Forms.dll)