DEV Community

loading...

สวัสดี C# .NET

Weerasak Chongnguluam
Software Developer/Love to code/Teaching to code
・2 min read

ครั้งสุดท้ายที่เคยได้ใช้เครื่องมือของ Microsoft .NET คือปี 2006 ตอนนี้ 2021 เครื่องมือ .NET เปลี่ยนไปหมดแล้ว ข้อสำคัญคือ .NET runtime และ .NET SDK มีในทั้ง Windows, Linux และ macOS

.NET ก็ใช้เทคนิคเดียวกันกับ Java คือมี Runtime เพื่อรันภาษา byte code ของตัวเองไปเป็น native code ของแต่ละ platform ซึ่งในฝั่ง .NET มี CLR (Common Language Runtime) เทียบได้กับ JRE ของฝั่ง Java ส่วนการ packaging ในฝั่ง Java มี Jar ในฝั่ง .NET เรียก Assemblies

ตัว .NET runtime เองนั้นตอนนี้ก็รองรับการพัฒนาในอุปกรณ์หลายๆอย่างทั้ง ทำได้ทั้ง Desktop, Web, Mobile, IoT, AI/ML

Alt Text

การใช้งานตอนนี้ของ .NET ก็ดีขึ้นมาก โดยเมื่อติดตั้ง dotnet (โหลดติดตั้งในแต่ละ OS ได้จากที่นี่ https://aka.ms/dotnet-download ตอนนี้ version ล่าสุดที่ stable คือ .NET 5) ก็จะได้ทั้ง runtime ทั้ง SDK และมีคำสั่ง dotnet เอาไว้ให้ใช้งานง่ายๆทั้งสร้าง project ใหม่ และ รันง่ายๆผ่าน dotnet run

มาเริ่ม Hello World ง่ายๆกัน

เริ่มจากสร้างโปรเจ็คสำหรับ console app โดยสั่ง

dotnet new console -n HelloWorld
Enter fullscreen mode Exit fullscreen mode

dotnet new เป็น subcommand แล้วเราใส่ option console เพื่อบอก template ของโปรเจ็คที่จะสร้างว่าเป็นแบบ console application จากนั้นใส่ -n HelloWorld เพื่อระบุชื่อโปรเจ็ค

เมื่อรันแล้วจะได้ folder HelloWorld ออกมา ด้านในมีไฟล์แบบนี้

├── HelloWorld.csproj
├── Program.cs
├── bin
│   └── Debug
│       └── net5.0
│           └── ref
└── obj
    ├── Debug
    │   └── net5.0
    │       ├── HelloWorld.AssemblyInfo.cs
    │       ├── HelloWorld.AssemblyInfoInputs.cache
    │       ├── HelloWorld.GeneratedMSBuildEditorConfig.editorconfig
    │       ├── HelloWorld.assets.cache
    │       └── ref
    ├── HelloWorld.csproj.nuget.dgspec.json
    ├── HelloWorld.csproj.nuget.g.props
    ├── HelloWorld.csproj.nuget.g.targets
    ├── project.assets.json
    └── project.nuget.cache
Enter fullscreen mode Exit fullscreen mode

ไฟล์ HelloWorld.csproj คือไฟล์ config ของ project ส่วน Program.cs คือไฟล์โค้ดภาษา C# ที่มี Main method อยู่ ส่วน bin กับ obj คือไฟล์ที่ถูกสร้างตอนที่เรา build project

มาดูกันใน Program.cs เราจะเห็นโค้ดแบบนี้

using System;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

ซึ่งโครงสร้างของโปรแกรม C# เบื้องต้นคือมี class ใน class จะมี method อยู่ และเราจัดกลุ่ม class ได้ด้วย namespace เช่นโค้ดนี้มี class Program ที่มี method Main ถูกจัดอยู่ภายใต้ namespace HelloWorld

ส่วน using System; นั้นใช้เพื่อ import namespace อื่นในกรณีนี้คือ System ที่มีคลาส Console ทำให้เราเรียกใช้สั้นๆไม่ต้องใส่ชื่อ System.Console ทุกครั้ง

ใน Main method นั้นเราก็ทำการเรียก Console.WriteLine("Hello World!"); เพื่อส่งสตริง "Hello World!" ออกไปแสดงที่หน้าจอ console นั่นเอง

เราสั่งรันได้โดยเรียก

% dotnet run
Hello World!
Enter fullscreen mode Exit fullscreen mode

สรุป

จากปี 2006 จนตอนนี้ 2021 เทคโนโลยีของ .NET ก็พัฒนาไปมากๆ การใช้งานจากตอนโน้นที่ต้องลง Visual Studio บน Windows เท่านั้นก็เปลี่ยนเป็นเครื่องมือที่มีทั้ง Runtime, SDK และ command line ง่ายๆให้ใช้ในทุก platform หลักทั้ง Windows, Linux และ macOS

IDE อย่าง Visual Studio ก็ไม่ใช่ทางเลือกเดียวอีกต่อไป จะใช้ VS Code หรือใช้เครื่องมือของ JetBrains อย่าง JetBrains Rider ก็ได้

ภาษาหลักของ .NET ตอนนี้คือ C# และมีภาษาที่ติดมากับ SDK ด้วยเลยอีกสองคือ F# กับ Visual Basic

ด้วยความที่ .NET runtime นั้นมีเครื่องมือในการพัฒนา application ได้หลากหลาย platform ก็ทำให้เป็นตัวเลือกที่ดีตัวนึงในการใช้งาน ในหลายๆสถานการณ์เช่นกัน ดังนั้นใครยังไม่เคยลองหัด .NET และภาษาของ .NET อย่าง C# ก็ควรจะลองดูได้เช่นกันครับในยุคนี้ ถือว่าคุ้มต่อการลงทุนศึกษาอยู่เช่นกัน

ขอฝาก Buy Me a Coffee

สำหรับท่านใดที่อ่านแล้วชอบโพสต์ต่างๆของผมที่นี่ ต้องการสนับสนุนค่ากาแฟเล็กๆน้อยๆ สามารถสนับสนุนผมได้ผ่านทาง Buy Me a Coffee คลิ๊กที่รูปด้านล่างนี้ได้เลยครับ

Buy Me A Coffee

ส่วนท่านใดไม่สะดวกใช้บัตรเครดิต หรือ Paypal สามารถสนับสนุนผมได้ผ่านทาง PromptPay โดยดู QR Code ได้จากโพสต์ที่พินเอาไว้ได้ที่ Page DevDose ครับ https://web.facebook.com/devdoseth

Discussion (0)