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

Namespace

Nhìn lại chương trình đầu tiên mà dotnet tạo ra:

using System;

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

Bạn thấy nó đã tạo ra một namespace tên CSHelloWorld, hoặc ở đầu có dòng using System; là cho biết sẽ sử dụng các đối tượng có trong namespace System;

Namespace là khai báo một phạm vi, nó chứa tập hợp các đối tượng liên quan nhau.

Ví dụ, bạn muốn sử dụng một namespace của riêng bạn, đặt tên là myprogram, thì mục đích là bạn muốn tập hợp các đối tượng của bạn vào trong namepace đó, ví dụ khai báo các lớp.

namespace myprogram {
    // Định nghĩa các lớp, cấu trúc ...
}

Từ đầu, bạn đã sử dụng namespace của riêng bạn - khi dotnet phát sinh các project mẫu.

Một namespace bạn có thể định nghĩa ở nhiều file code khác nhau. Khi muốn sử dụng một namespace nào đó, thì dùng cú pháp

using namespace;

Ví dụ, namespace Systems; là namepace cơ sở hệ thống của .NET, nên hầu như mọi chương trình đều có đoạn code using Systems; ở đầu.

Các namespace cũng có thể khai báo lồng nhau, ví dụ namepace B nằm trong namspace A

namespace A {
    // Định nghĩa các lớp, cấu trúc ...
    namespace B {
        // Định nghĩa các lớp, cấu trúc ...
    }
}

Khi đó muốn dùng các lớp, cấu trúc ... có trong namespace B thì khai báo

using A.B;

Thư viện .NET cung cấp rất nhiều namespace - mỗi namespace là tập hợp các lớp, cấu trúc về một vấn đề nào đó.

Lớp lồng nhau (Nested) C#

Trong C# cho phép khai báo một lớp bên trong một lớp khác (giống inner class của Java). Kỹ thuật này nhằm gom những cấu trúc có sự liên quan logic với nhau vào một nhóm để dễ quản lý.

Ví dụ:

class Container
{
    class Nested
    {
        Nested() { }
    }
}

Lớp Nested được khai báo, định nghĩa trong lớp Container.

Ví dụ lớp lồng nhau

class Product {
    public Manufactory manufactory {set; get;}

    // Lớp Manufactory nằm trong Product 
    public class Manufactory {
        string address;
        public Manufactory(string address) {
            this.address = address;
        }
        public void ShowAddress() {
           Console.WriteLine(address);
        }
    }

   public void ProductInfo() {
       manufactory.ShowAddress();
   }
}
class Program
{

    static void Main(string[] args)
    {
        Product product = new Product();
        product.manufactory =  new Product.Manufactory("Abc ...");
        product.ProductInfo();
    }
}
Đăng ký theo dõi ủng hộ kênh