Một namespace trong C# được thiết kế để cung cấp một cách để tách một tập hợp các tên khác nhau. Các tên lớp được khai báo trong một namespace không xung đột với lớp cùng tên đó được khai báo trong namespace khác.
Một namespace trong C# bắt đầu với từ khóa namespace được theo sau bởi tên của namespace đó, như sau:
namespace namespace_name
{
// code declarations
}
Để gọi phiên bản đã kích hoạt của namespace của hàm hoặc biến, bạn hãy thêm tên của namespace đó như sau:
namespace_name.item_name;
Ví dụ sau minh họa cách sử dụng của namespace trong C#:
using System;
namespace Space1
{
class ClassA
{
public void Print()
{
Console.WriteLine("Inside Space 1");
}
}
}
namespace Space2
{
class ClassA
{
public void Print()
{
Console.WriteLine("Inside Space 2");
}
}
}
class TestClass
{
static void Main(string[] args)
{
Space1.ClassA instance1 = new Space1.ClassA();
Space2.ClassA instance2 = new Space2.ClassA();
instance1.Print();
instance2.Print();
Console.ReadKey();
}
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
Inside Space 1
Inside Space 2
Từ khóa using được sử dụng để khai báo sử dụng namespace cho chương trình. Do vậy, chương trình có thể truy cập và sử dụng các tên trong namespace đã khai báo.
Ví dụ: Để sử dụng lớp Console trong chương trình chúng ta sẽ viết như sau nê không khai báo sử dụng namespace System:
System.Console.WriteLine("Hello there");
Như bạn thấy ở ví dụ trên, việc thêm namespace System ở trước class Console làm cho câu lệnh trông khá dài dòng. Nếu bạn sử dụng lớp Console nhiều lần thì sẽ rất bất tiện vì phải viết đi viết lại nhiều lần.
Để tránh phải viết lặp đi lặp lại tên của namespace chúng ta có thể sử dụng khai báo using System; ở đầu chương trình. Lệnh này cho trình biên dịch biết rằng chương trình đang sử dụng các tên trong không gian tên được chỉ định.
Hãy để chúng tôi viết lại ví dụ trước của chúng tôi, bằng cách sử dụng chỉ thị trong C#:
using System;
using Space1;
using Space2;
namespace Space1
{
class ClassA
{
public void Print()
{
Console.WriteLine("Inside Space 1");
}
}
}
namespace Space2
{
class ClassB
{
public void Print()
{
Console.WriteLine("Inside Space 2");
}
}
}
class TestClass
{
static void Main(string[] args)
{
ClassA a = new ClassA();
ClassB b = new ClassB();
a.Print();
b.Print();
Console.ReadKey();
}
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
Inside Space 1
Inside Space 2
Trong C#, bạn có thể định nghĩa một namespace bên trong các namespace khác, như sau:
namespace namespace_name1
{
// code declarations
namespace namespace_name2
{
// code declarations
}
}
Bạn có thể truy cập các thành viên của các namespace lồng nhau bằng cách sử dụng toán tử dot (.) trong C#, như sau:
using System;
using MainSpace;
using MainSpace.SubSpace;
namespace MainSpace
{
class ClassA
{
public void Print()
{
Console.WriteLine("Inside Main Space");
}
}
namespace SubSpace
{
class ClassB
{
public void Print()
{
Console.WriteLine("Inside Sub Space");
}
}
}
}
class TestClass
{
static void Main(string[] args)
{
ClassA a = new ClassA();
ClassB b = new ClassB();
a.Print();
b.Print();
Console.ReadKey();
}
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
Inside Main Space
Inside Sub Space
Ngoài những cách truy cập namespace đã được trình bày ở trên, C# còn cung cấp một cách nữa đó là sử dụng bí danh cho namespace (alias).
Ví dụ sau đây sẽ minh họa cách sử dụng bí danh cho namespace:
using generics = System.Collections.Generic;
namespace AliasExample
{
class TestClass
{
static void Main()
{
generics::Dictionary<string, int> dict = new generics::Dictionary<string, int>()
{
["A"] = 1,
["B"] = 2,
["C"] = 3
};
foreach (string name in dict.Keys)
{
System.Console.WriteLine($"{name} {dict[name]}");
}
}
}
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
A 1
B 2
C 3
Như bạn đã thấy ở ví dụ trên, bí danh generics được sử dụng thay cho namespace System.Collections.Generic. Để truy sử dụng các tên trong không gian tên này chúng ta chỉ cần gọi theo cú pháp generics::
Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Trong loạt bài này, tôi sẽ xem xét một số
Ngôn ngữ C# đã bật các bộ tăng áp liên
Trong bài viết này, chúng ta sẽ tìm hiểu lớp tiện ích ZipFile trong C#, cách nén tập tin và thư mục, cùng với giải nén tập tin zip.
Bài viết này sẽ giới thiệu cách đơn giản nhất mà tôi đã tìm thấy để đọc và ghi file Excel bằng C# sử dụng ExcelMapper.