Namespace trong C# C Sharp .Net Core

Tìm hiểu về namespace trong lập trình C#, khai báo và tạo ra các namespace, các namespace lông nhau, sử dụng nạp các phương thức tĩnh của lớp

Namespace là gì trong C#

Namespace là cách tổ chức nhóm code (các lớp, giao diện, cấu trúc …) thành những nhóm, tạo ra phạm vi hoạt động
của các thành phần trong nhóm. Nhìn lại chương trình đầu tiên mà dotnet tạo ra:

using System;

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

Bạn thấy, code trên có:

  • Đã chỉ thị nạp một namespace vào để sử dụng cho file code,
    đó là chỉ thị using System;. Điều này có nghĩa các thành phần (class, interface, enum …)
    được định nghĩa trong namespace System sử dụng được trong code.
    Như lớp Console định nghĩa trong System thì trong code đã truy cập được lớp này –
    Console.WriteLine("Xin chào C# NET CORE!");
  • Đã định nghĩa một namespace mới có tên CS001_HelloWorld
    và trong namespace này định nghĩa một lớp có tên Program

Như vậy: Namespace khai báo một phạm vi, nó chứa tập hợp các đối tượng liên quan nhau, nhằm mục đích tổ chức
code khoa học, dễ quản lý và đặc biệt là tránh xung đột về tên. (bạn có thể khai báo hai lớp tên giống nhau nhưng
nằm ở hai namespace khác nhau).

Cách khai báo tạo ra một namespace mới: sử dụng từ khóa namespace và chỉ ra tên
namespace muốn tạo mới, các thành phần khai báo trong namespace này (class, interface, struct …)
được định nghĩa trong khối {}.

Ví dụ, khai báo tạo ra namespace có tên mynamespace

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

Một namespace bạn có thể định nghĩa ở nhiều file code (.cs) khác nhau.
Khi muốn sử dụng các thành phần của namespace nào đó, thì dùng từ khóa using ở đầu file code để
chỉ thị nạp namespace này vào

using mynamespace;
using mynamespace;
...

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 thành phần được khai báo trong một namespace:
namespace con,
các lớp (class),
các giao diện interface c#,
các cấu trúc – struct C#,
các liệt kê enum,
các deleage C#

Namespace lồng nhau, nhiều cấp

Các namespace cũng có thể khai báo lồng nhau, nhiều cấp sau đó dùng ký hiệu . để truy cập đến
namepace mong muốn, 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 đó.

Tạo ra namespace nhiều cấp còn có thể khai báo một cách riêng rẽ nhưng phải chỉ rõ tên đầy đủ của namespace
(tên namespace gốc)

Ví dụ, namespace C là con của namespace B, B lại là con của namespace A thì bạn có thể khai báo lồng nhau như
trên hoặc:

namespace A
{
    public struct StructInA {};
}
namespace A.B 
{
    public struct StructInB {};
}
namespace A.B.C
{
    public struct StructInC {};
}

Cách khai báo này hoàn toàn giống:

namespace A
{
    public struct StructInA { };

    namespace B
    {
        public struct StructInB { };

        namespace C
        {
            public struct StructInC { };
        }
    }
}

Truy cập namespace và từ khóa using

Để sử dụng một lớp, cấu trúc, interface … khai báo trong một namespace nào đó, bạn phải viết tên đầy
đủ của namespace và dẫn đến tên lớp muốn sử dụng, các cấp phân cách nhau bởi ký tự .

Ví dụ, lớp StringBuilder được định nghĩa trong namespace System.Text,
vậy để dùng nó trong code bạn phải viết với tên đầy đủ System.Text.StringBuilder:

System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();

Hoặc sử dụng StructInC ở trên bạn phải viết:

A.B.C.StructInC mystruct;

Để tránh phải viết tên đầy đủ như vậy bạn sử dụng đến từ khóa using với namespace cần dùng ở đầu.
Ví dụ:

using System.Text;
//... các thành phần khác

    static void Main (string[] args) {

        StringBuilder stringBuilder = new StringBuilder();
         // Không cần viết: System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();
    }

Như vậy chỉ thị using cho phép bạn nạp một namespace con, bạn không cần viết tên đầy đủ gồm cả pham
vi truy cập đến lớp, interface … trong namespace

Chỉ thị using cũng giúp bạn đặt tên mới (tên tắt) của namespace, tên này sử dụng trong phạm vi file code.
Cú pháp là using NewName = OldName.
Ví dụ đặt System.Text thành XYZ thì lớp XYZ.StringBuilder chính là lớp
System.Text.StringBuilder

using XYZ = System.Text;

//... các thành phần khác

    static void Main (string[] args) {

        XYZ.StringBuilder stringBuilder = new XYZ.StringBuilder();
    }

Sử dụng using chỉ thị truy cập trực tiếp các phương thức tĩnh, mà không cần viết tên lớp
cú pháp nạp phương thức tĩnh của lớp có dạng using static namespace ... class.

Ví dụ phương thức tĩnh WriteLine trong WriteLine:

using static System.Console;  // cho biết sử dụng trực tiếp các phương thức tĩnh

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

ĐĂNG KÝ KÊNH, XEM CÁC VIDEO TRÊN XUANTHULAB

Đăng ký nhận bài viết mới

Rate this post

Viết một bình luận