C# Cơ bản .NET Core §1) Cài đặt, chương trình C# đầu tiên §2) Biến, kiểu dữ liệu và nhập/xuất §3) Toán tử số học và gán §4) So sánh, logic và lệnh if, switch §5) Vòng lặp for, while §6) Phương thức - Method §7) Phương thức - Delegate §8) Lớp - Class §9) Kiểu vô danh và dynamic §10) Biểu thức lambda §11) Event §12) Hàm hủy - Quá tải toán tử - thành viên tĩnh - indexer §13) Lớp lồng nhau - namespace §14) null và nullable §15) Mảng §16) Chuỗi ký tự §17) Tính kế thừa §18) Tính đa hình - abstract - interface §19) Struct và Enum §20) Ngoại lệ Exeption §21) IDisposable - using §22) File cơ bản §23) FileStream §24) Generic §25) Collection - List §26) SortedList §27) Queue / Stack §28) Linkedlist §29) Dictionary - HashSet §30) Phương thức mở rộng §31) ObservableCollection §32) LINQ §33) (Multithreading) async - bất đồng bộ §34) Type §35) Attribute Annotation §36) DI Dependency Injection §37) (Multithreading) Parallel §38) (Networking) HttpClient §39) (Networking) HttpMessageHandler §40) (Networking) HttpListener §41) (Networking) Tcp TcpListenerr/TcpClient §42) (ADO.NET) SqlConnection §43) (ADO.NET) SqlCommand §44) (EF Core) Tổng quan §45) (EF Core) Tạo Model §46) (EF Core) Fluent API §47) (EF Core) Query §48) (EF Core) Scaffold §49) (EF Core) Migration §50) (ASP.NET CORE) Hello World! §51) (ASP.NET CORE) Middleware §52) (ASP.NET CORE) Map - Request - Response §53) (ASP.NET CORE) IServiceCollection - MapWhen §54) (ASP.NET CORE) Session - ISession §55) (ASP.NET CORE) Configuration §56) (ASP.NET CORE MVC) Controller - View

Giới thiệu về C# và .NET FRAMEWORK

C# là một ngôn ngữ lập trình hướng đối tượng rất tường minh, rõ ràng. C# được dùng để phát triển nhiều ứng dụng (Ứng dụng Windows, Linux, macOS, Web ...) có tính hiệu năng cao và bảo mật thi hành trên nền tảng .NET Framework

Microsoft tạo ra .NET Framework năm 2003, đi cùng với nó ngôn ngữ lập trình mới được giới thiệu là C#, dùng để phát triển các ứng dụng chạy trên nền tảng .NET Framework.

.NET Framework

.NET Framework bao gồm thành phần CLR (Common Language Runtime)s và các thư viện lớp .NET framework.

CRL là nền tảng của .NET Framework. Nó có chức năng quản lý mã ở thời điểm thực thi, cung cấp các dịch vụ cốt yếu như quản lý bộ nhớ hay các chức năng khác nhau dành cho code của bạn.

Thư viện lớp là một tập hợp các lớp, giao diện (interface), kiểu giá trị nó cho phép bạn sử dụng để thi hành rất nhiều tác vụ trong lập trình: ví dụ như xử lý dữ liệu, truy cập file, làm việc với văn bản ... Từ thư viện lớp cung cấp sẵn này, các chương trình C# phát triển và mở rộng để thêm vào các chức năng khác nhau.

Một số đặc điểm của ngôn ngữ lập trình C#

  • Cú pháp đơn giản - giống Java
  • Các phương thức, thuộc tính bắt buộc khai báo trong lớp
  • Biến được khai báo với kiểu dữ liệu
  • Các đối tượng không thể được giải phóng tường minh
  • ...

.NET Core

Trong khi .NET Framework chạy trên hệ thống Windows, từ năm 2016 MS giới thiệu .NET Core 1.0 (hiện là 3.0) chó thể chạy đa nền tảng (trên Windows, macOS, Linux). .NET Core có thể hiểu như là một tập con trong .NET Framework, .NET Core cũng có một CLR và thư viện lớp tương tự như .NET Framework (nhưng được viết lại, loại bỏ dependencies để nó nhỏ gọn). NET Core 2.0 hỗ trợ tới 32000 API của .NET Framework và 70% các gói từ Nuget của .NET Framework được chuyển hỗ trợ .NET Core.

Những bài viết này sử dụng .NET Core để học C# nhằm có thể sử dụng Windows, macOS, Ubuntu để viết code C# và chạy ứng dụng.

Ứng dụng C# đầu tiên với Visual Studio Code

Để tập trung vào các khía cạnh cốt lõi của C#, sẽ thực hành trên các ứng dụng loại C# Console (.NET Core) (loại ứng dụng dòng lệnh không sử dụng giao diện đồ họa GUI)

Sử dụng Visual Studio

Các bài học sẽ tập trung sử dụng Visual Studio Code, tuy nhiên Visual Studio rất mạnh và nhiều người cũng quen thuộc với nó. Trong Windows và macOS bạn có thể tải và cài đặt bản miễn phí Visual Studio Community để tạo ra các dự án C# - Net Core. Để tạo dự án C# .NET Core mới, chọn File > New Project ... - chọn các thiết lập và điền tên ứng dụng ví dụ CSHelloworld như hình sau.

CSharp VS

Dự án mới tạo ra, bạn sẽ sửa code sau - để chạy ứng dụng nhấn CTRL + F5 hoặc F5 để dubug ...

Sử dụng Visual Studio Code

Với mục đích có thể viết ứng dụng trên cả Windows, Linux, macOS bạn có thể tải về và sử dụng Visual Studio Code

Trước tiên cần tải và cài đặt vào hệ thống .NET Core SDK (Chọn và cài đặt phiên bản theo hệ thống Windows, Linux hay macOS của bạn)

Sau khi cài đặt .NET Core gõ lệnh sau vào Terminal (trong Windows có thể dùng PowerShell) để kiểm tra:

dotnet --version
Kiem tra .NET Core

Visual Studio Code rồi, để nó hỗ trợ C# và dự án viết cho .NET Core cần cài đặt các Extension sau (bấm vào biểu tượng Extension và gõ tên extension để tìm):

CSharp VS

Tạo ứng dụng CSHelloworl trên VSC

Tiến hành tạo ứng dụng console CSHelloWorld in ra lời chào trên màn hình.

Bước 1) Tạo một thư mục dự án đặt tên thư mục là CSHelloWorld, từ dòng lệnh chuyển vào thư mục đó (lệnh cd). Rồi gõ lệnh khởi tạo dự án C# .NET Core kiểu console

dotnet new console

Sau lệnh này nó sẽ tạo ra các file mã nguồn, cấu hình, thư mục cần thiết trong CSHelloWorld, để khởi tạo một dự án C# .NET Core mới.

Khi mở thư mục dự án bằng Visual Studio Code (VSC) với lệnh code (lệnh này có là do thiết lập VSC), chọn menu View > Command Pallet ... gõ vào .NET - từ menu đổ xuống chọn mục: NET: Generate Assets for Build and Debug - để VSC thêm vào dự án file cấu hình build và chạy ứng dụng nếu chưa có.

CSharp VS

Để khi nhấn CTRL + F5 hay F5 chạy chương trình nó nhận tương tác tốt từ terminal thay có thể thay đổi cấu hình khởi chạy dự án của VSC. Hãy mở file ./vscode/launch.json, tìm đến dòng "console": "internalTerminal" hãy thay bằng "console": "integratedTerminal" hoặc "console": "externalTerminal" (mở của sổ Terminal mới khi chay)

Bước 2) Mở thư mực CSHelloWorld bằng Visual Studio Code, trong thư mục đó có sẵn đoạn code file ví dụ mẫu có tên Program.cs, mở file đó ra và sửa đoạn mã như hình dưới.

using System;

namespace CSHelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Xin chào C# NET CORE!");
        }
    }
}

Để hiểu cụ thể từng câu lệnh trong đoạn mã trên sẽ trình bày trong các bài viết tiếp theo, ở đây bạn hiểu nó là một ứng dụng dạng Console (dòng lệnh) - do vậy bạn thấy nó bắt buộc phải có một hàm Main

Hàm Main là điểm bắt đầu chương trình được chạy.

Giải thích nhanh các thành phần cho hàm Main ở trên (chi tiết ở các phần sau)

  • static cho biết hàm tên Main không thuộc về đối tượng nào cả
  • void cho biết hàm Main không trả về giá trị
  • Main tên hàm, đặt tên là Main vì nó là điểm khởi đầu của chương trình
  • args là tham số truyền vào hàm Main, nó là một mảng các chuỗi (string[]), tham số này truyền vào khi ở dòng lệnh

Để chạy đoạn mã (mở cửa sổ Terminal trong VSC: CTRL + ~, đang ở thư mục CSHelloWorld) gõ:

dotnet run
CSharp VS

Ngoài ra cũng có thể:

  • Nhấn F5 để bắt đầu Debug
  • Nhấn CTRL + F5 để chạy chương trình (không Debug)
  • Chọn menu Terminal > Run Task ... để thi hành build ứng dụng theo các cấu hình thiết lập trong tasks.json như build, publish, watch

Ví dụ khi chọn Terminal > Run Task ..., chọn tiếp publish thì VSC sẽ build ứng dụng kết quả lưu ở thư mục CSHelloWorld/bin/Debug/netcoreapp2.1/publish/ - đây là kết quả để có thể phân phối ứng dụng. Hoặc gõ lệnh

dotnet publish

Trong thư mục kết quả build của ví dụ trên, có được file CSHelloWorld.dll, khi phân phối để chạy ứng dụng có thể gõ

dotnet CSHelloWorld.dll
CSharp VS

Như vậy đã có một ứng dụng C# NET Core đơn giản, nó có thể chạy trên Windows, Linux, macOS miễn là hệ thống đó có cài đặt .NET Core

Mã nguồn CSHelloWorld

Chi tiết để Publish một ứng dụng xem trong bài viết Publish ứng dụng C# NET Core

Ghi chú trong C#

Các ghi chú comment là các dòng chữ được ghi chép trực tiếp vào văn bản code, các comment bỏ qua tri chương trình chạy (thông dịch). Bạn có thể ghi chú trên một dòng và ghi chú nhiều dòng

Ghi chú một dòng

Là dòng ghi chú chỉ viết trên một dòng, nội dung ghi chú bắt đầu từ ký hiệu // cho đến hết dòng. Bạn có thể đặt toàn bộ ghi chú này trên một dòng riêng biệt hay có thể đặt nối tiếp vào câu lệnh, đại lượng ...

using System;

namespace CSHelloWorld
{
    class Program     // Đây là một ghi chú 1 dòng, đặt ngay sau lệnh C#
    {
        static void Main(string[] args)
        {
            // Đây là một dòng ghi chú 1 dòng riêng biệt - dòng này không ảnh hưởng đến code

            Console.WriteLine("Xin chào C# NET CORE!");
        }
    }
}

Ghi chú trên nhiều dòng

Nếu nội dung ghi chú dài bạn có thể viết nó trên nhiều dòng, mỗi dòng bắt đầu bằng // - tuy nhiên để nhanh chóng bạn có thể biên tập nội dung ghi chú nhiều dòng, nội dung đó bắt đầu bằng /* và kết thúc bằng */

using System;

namespace CSHelloWorld
{
    class Program     // Đây là một ghi chú 1 dòng, đặt ngay sau lệnh C#
    {
        static void Main(string[] args)
        {
            // Đây là một dòng ghi chú 1 dòng riêng biệt - dòng này không ảnh hưởng đến code

            Console.WriteLine("Xin chào C# NET CORE!");
        }
    }
}

Tạo C# XML Document

Đây là một loại ghi chú viết theo một cấu trúc quy định - sử nhiều dòng ghi chú 1 dòng với cấu trúc quy định, nhằm hỗ trợ phát sinh Document (hướng dẫn) đến các đối tượng sử dụng (hàm, lớp, tham số ...)

Để hỗ trợ phát sinh C# XML Document hãy cài đặt thêm extension có thên C# XML Documentation Comments, nếu đang dùng Visual Studio thì không cần cài thêm gì.

Để phát sinh một XML Document cho đối tượng nào đó (hàm, lớp, biến ...) đặt con trỏ trước đối tượng đó và gõ ///, sau đó bạn chỉ việc cập nhật nội dung theo cấu trúc nó phát sinh

Ví dụ

/// <summary>
/// Tính tổng hai số nguyên
/// </summary>
/// <param name="a">số thứ nhất</param>
/// <param name="b">số thứ hai</param>
/// <returns>giá trị a + b</returns>
static int TongHaiSo(int a, int b)
{
    return a + b;
}

Bằng cách tạo ghi chú như vậy, nó sẽ phát sinh Document tham khảo khi bạn sử dụng đối tượng đó, như hình sau - nó xuất hiện Document khi bạn gõ tên hàm.

CSharp Document

Khi viết code cần tham khảo Document của hàm, lớp nào đó thì khi gõ tên hàm, lớp xong gõ tổ hợp phím CTRL + SPACE để hiện thị Document

Đăng ký theo dõi ủng hộ kênh