Namespace trong C# – Lập trình không khó

84 / 100

Mở đầu

Khi làm việc, ta cũng sẽ bắt gặp rất nhiều từ khóa namespace, từ viết chương trình đơn giản tới phức tạp, viết class, hay làm bất cứ việc gì liên quan tới C# ta đều ít nhiều bắt gặp từ khóa này. Vậy trong bài viết này chúng ta cùng tìm hiểu từ khóa namespace là gì nhé !

Namespace trong C# là gì ?

Định nghĩa

Theo Microsoft, namespace được thiết kế để giữ một tập hợp các tên được phân biệt riêng rẽ nhau. Các tên giống nhau khi được đặt ở các namespace khác nhau sẽ không xung đột với nhau.

Tại sao lại cần tới namespace ?

Trong lập trình, khi chương trình lớn có nhiều tính năng thì ở mỗi tính năng có thể sẽ có các phương thức trùng tên nhau nhưng lại hoạt động khác nhau và 2 tính năng đó là độc lập thì cần phân ra mỗi namespace cho mỗi tính năng. Tương tự như Mỹ và Italia đều có 2 thành phố là Venice vậy nên chúng ta phải xác định thêm tên quốc gia để có thể biết 2 thành phố Venice này là khác nhau, namespace cũng như thế (xem hình minh họa dưới đây).

namespace trong c#

ảnh minh họa : Devmaster

Khai báo

Để định nghĩa một namespace trong C# ta bắt đầu với từ khóa namespace trước rồi tới tên namespace. Sau đây là ví dụ đơn giản nhất về chương trình Hello, World:

1234567891011121314

usingSystem;

namespaceluyencodec_

{

classProgram

{

staticvoidMain(string[]args)

{

Console.WriteLine(” Hello, world ! “);

Console.ReadKey();/ / dừng màn hình hiển thị

}

}

}

Chương trình này sẽ xuất ra dòng chữ Hello, world !, qua chương trình có thể thấy, chúng ta đã khai báo một namespace tên là luyencodec_ và bên trong có chứa class Program. Đây là chương trình cơ bản sau khi tạo một project C# nằm trong file Program.cs.

Như vậy rút ra từ chương trình ví dụ, ta có thể dễ dàng nhận ra được cấu trúc để khai báo một namespace trong C#:

123

namespace {

/ / code …}

Khai báo namespace lồng nhau

Tương tự như các cấu trúc có thể lồng nhau namespace cũng có thể làm tương tự như vậy. Dưới đây là ví dụ về cấu trúc namespace lồng nhau:

123456789101112131415161718

namespacenamespaceA

{

namespacenamespaceB

{

/ / code

}

namespacenamespaceC

{

namespacenamespaceD

{

/ / code

}

}

}

Để truy cập vào các namespace con ở trong các namespace cha, ta gọi từ các namespace cha lần lượt vào trong. Ví dụ, để gọi vào namespaceD ở trên:

1

namespaceA.namespaceC.namespaceD;

Cách sử dụng một namespace

Ở phần trước của bài chúng ta đã rút ra được từ chương trình được tạo sẵn sau khi tạo một project C#, namespace này sẽ tự động được gọi khi chương trình thực thi. Nhưng giờ các bạn có nhiều namespace khác nhau và muốn gọi chúng khi sử dụng thì sao ?

Để gọi một namespace đã được định nghĩa ta sử dụng như sau:

123

.;

Ví dụ sau đây minh họa cách sử dụng namespace trong C#:

1234567891011121314151617181920212223242526272829303132333435363738394041

usingSystem;

namespacecon_meo

{

classMeo

{

publicvoidcheck_namespace()

{

Console.WriteLine(” Ban dang truy cap vao namespace \ ” con_meo \ ” “);

}

}

}

namespacedong_vat

{

classMeo

{

publicvoidcheck_namespace()

{

Console.WriteLine(” Ban dang truy cap vao namespace \ ” dong_vat \ ” “);

}

}

}

namespaceluyencodec_

{

classProgram

{

staticvoidMain(string[]args)

{

/ / khai báo class Meo trải qua namespace con_meo

con_meo.Meomeo1=newcon_meo.Meo();

/ / khai báo class Meo trải qua namespace dong_vat

dong_vat.Meomeo2=newdong_vat.Meo();

meo1.check_namespace();

meo2.check_namespace();

Console.ReadKey();/ / dừng màn hình hiển thị

}

}

}

Chương trình này sau khi chạy sẽ cho ra hiệu quả như sau :

12 Ban dang truy cap vao namespace ” con_meo “Ban dang truy cap vao namespace ” dong_vat “

Như vậy, chúng ta có thể khai báo và sử dụng 2 class bị trùng tên là Meo thông qua 2 namespace là con_meo và dong_vat mà không bị xung đột.

Sử dụng namespace với từ khóa using

Ở phần trước của bài, bạn đã được giới thiệu về cách sử dụng một namespace đã được định nghĩa. Phần này, mình sẽ giới thiệu cho các bạn về từ khóa using cũng là một cách khác để có thể sử dụng namespace đã được định nghĩa.

Ví dụ, chúng ta sử dụng câu lệnh using System; ở mỗi đầu chương trình câu lệnh nhập xuất trong C# ra sử dụng:

1

Console.WriteLine(” in ra cai gi do “);

hoặc

1

System.Console.WriteLine(” in ra cai gi do “);

Như chúng ta có thể thấy, việc khai báo using System; ở đầu chương trình thì chúng ta có thể rút gọn tên namespace System ở mỗi lần sử dụng. Các bạn hãy thử bỏ câu lệnh using System; ở đầu chương trình đi để thấy sự khác biệt nhé.

Tiếp tục, quay trở lại với ví dụ ở phần trên :

1234567891011

12

1314151617181920212223242526272829303132333435363738394041

usingSystem;

namespacecon_meo

{

classMeo

{

publicvoidcheck_namespace()

{

Console.WriteLine(” Ban dang truy cap vao namespace \ ” con_meo \ ” “);

}

}

}

namespacedong_vat

{

classMeo

{

publicvoidcheck_namespace()

{

Console.WriteLine(” Ban dang truy cap vao namespace \ ” dong_vat \ ” “);

}

}

}

namespaceluyencodec_

{

classProgram

{

staticvoidMain(string[]args)

{

/ / khai báo class Meo trải qua namespace con_meo

con_meo.Meomeo1=newcon_meo.Meo();

/ / khai báo class Meo trải qua namespace dong_vat

dong_vat.Meomeo2=newdong_vat.Meo();

meo1.check_namespace();

meo2.check_namespace();

Console.ReadKey();/ / dừng màn hình hiển thị

}

}

}

Giờ chúng ta hãy khai báo câu lệnh using con_meo; ở đầu chương trình:

12345678910111213141516171819202122232425262728293031323334353637383940414243

usingSystem;

usingcon_meo;/ / thêm dòng này vào đầu chương trình

namespacecon_meo

{

classMeo

{

publicvoidcheck_namespace()

{

Console.WriteLine(” Ban dang truy cap vao namespace \ ” con_meo \ ” “);

}

}

}

namespacedong_vat

{

classMeo

{

publicvoidcheck_namespace()

{

Console.WriteLine(” Ban dang truy cap vao namespace \ ” dong_vat \ ” “);

}

}

}

namespaceluyencodec_

{

classProgram

{

staticvoidMain(string[]args)

{

/ / khai báo class Meo trải qua namespace con_meo mà không cần gọi trực tiếp con_meo

/ / con_meo. Meo meo1 = new con_meo. Meo ( ) ;

Meomeo1=newMeo();

/ / khai báo class Meo trải qua namespace dong_vat

dong_vat.Meomeo2=newdong_vat.Meo();

meo1.check_namespace();

meo2.check_namespace();

Console.ReadKey();/ / dừng màn hình hiển thị

}

}

}

Chương trình vẫn sẽ xuất ra :

12 Ban dang truy cap vao namespace ” con_meo “Ban dang truy cap vao namespace ” dong_vat “

Như vậy là thông qua 2 ví dụ trên, chúng ta rút ra được cách sử dụng từ khóa using:

1

using ;

Các built-in namespace có sẵn trong C#

Với từ khóa using đã được kể ở trên, bạn có thể sử dụng được các built-in namespace của C# bằng cách khai báo nó ở đầu chương trình, dưới đây là các built-in namespace có sẵn:

  • System
  • System.IO
  • System.Text
  • System.Draw
  • System.Collections.Generic

Những lưu ý khi sử dụng namespace

  • Tên của namespace phải được đặt theo chuẩn quy tắc đặt tên.
  • Nếu như khai báo nhiều namespace thì tên các namespace không được trùng nhau.

Tổng kết

Qua bài viết này mong những bạn sẽ hiểu rõ hơn về thế nào là namespace, cách khai báo và sử dụng namespace trong C #. Tổng kết lại tất cả chúng ta có namespace là :

  • Namespace giống như là 1 thùng container chứa trong đó là các định nghĩa, các khai báo, các hàm, biến, cấu trúc… và được xem như là 1 block trong c#. Nhờ việc bao bọc như thế mà ta có thể đóng gói và gom nhóm từng tính năng riêng lẻ của 1 chương trình để phục vụ việc bảo trì và phát triển về sau.

Và đó là tất cả những gì mà các bạn cần biết để có thể hiểu về namespace trong C#. Cảm ơn bạn đã đọc bài viết ! Hãy tiếp tục đồng hành cùng Lập Trình Không Khó trong các bài viết tiếp theo nhé !