2010-09-20 44 views
21

Tôi là một nhà phát triển Java, hoàn toàn mới đối với C#. Tôi hiện đang viết một DLL để phân phối trên toàn tổ chức của tôi. Nó là một thư viện rất đơn giản có chứa một vài lớp và tôi không thấy bất kỳ việc sử dụng thực sự nào trong việc đưa tất cả chúng vào một số không gian tên chỉ vì lợi ích của nó. Tôi có thực sự phải sử dụng không gian tên không? Nếu vậy, tại sao? Nó là một loại thực hành tốt nhất?câu hỏi cơ bản về C# - tôi có cần một không gian tên không?

+3

Bạn có thực sự cần một gói khi bạn làm điều như vậy trong Java? – Mchl

+2

Bạn sẽ sử dụng không gian tên gói trong java, tuy nhiên, phải không? –

+0

ok..đây là vấn đề thực sự đã dẫn tôi đến câu hỏi này. Tôi đã thử đặt tất cả các lớp vào một không gian tên gọi là 'A'. Lớp chính cũng được đặt tên là 'A'. Với điều này, các ứng dụng của khách hàng phải tham khảo lớp chính này là A.A, trông có vẻ khó xử. Điều này không xảy ra trong Java bởi vì trong Java có một sự phân biệt rõ ràng giữa tên gói và tên lớp..không có chỗ cho sự mơ hồ ... mà dường như không phải là trường hợp với C#. – Aadith

Trả lời

14

Bạn có cần một? Số Có nên bạn có? Vâng. Nó sẽ giúp ngăn chặn các vụ đụng độ với các lớp được đặt tên giống nhau trong các không gian tên khác mà không cần phải sử dụng đến (IMHO) sử dụng xấu xí của global::.

+2

Bên cạnh đó, khái niệm này dễ nắm bắt và thực hiện, vì vậy không có lý do thực sự tốt nào để tránh các không gian tên. – Raveline

10

Đối với các ứng dụng thử nghiệm throwaway (ví dụ: kiểm tra câu trả lời Stack Overflow), tôi không sử dụng không gian tên. Đối với mọi thứ khác, tôi có. Nó chỉ là một điều tổ chức - nếu bạn định sử dụng lại mã, bạn nên tách nó khỏi mã khác mà bạn cũng đang sử dụng lại trong cùng một ngữ cảnh. Ý tôi là, nếu bạn đang tạo một ứng dụng bằng LibraryX và LibraryY, sẽ hữu ích khi có thể phân biệt giữa chúng trong ứng dụng. Có thể cả hai đều sử dụng cùng một tên lớp, ví dụ - điều này sẽ làm cho mã xấu nếu bạn không sử dụng các không gian tên.

Ngoài bất cứ thứ gì khác, nếu bạn đang mã hóa với Visual Studio, nó thực sự hoạt động hơn không phải để bao gồm không gian tên - bạn phải sửa đổi dự án để cung cấp cho nó một không gian tên mặc định trống.

0

Không cần phải có không gian tên. Tuy nhiên, nhà phát triển dự kiến ​​bạn sẽ sử dụng một không gian tên. Ví dụ, khi bạn chọn để thêm một lớp học để một studio phát triển dự án sẽ:

  • Tạo một file cho lớp
  • Thêm tập tin vào dự án
  • Tạo một lớp rỗng (trong file trên) nằm trong vùng tên mặc định của dự án.

"Không gian tên mặc định của dự án" là khái niệm studio dành cho nhà phát triển không phải là khái niệm C# và được đặt trong thuộc tính của dự án.

Khi bạn đang tạo ra một dll cho người khác sử dụng, nó sẽ dễ dàng hơn rất nhiều cho những người sử dụng dll của bạn nếu bạn có một không gian tên:

  • dân mong đợi bạn để có một không gian tên (vì vậy có thể nhầm lẫn nếu bạn không)
  • Không gian tên giúp người dùng dễ dàng hơn nếu bạn có lớp (hoặc enum vv) được đặt tên giống với một lớp khác trong bất kỳ dll nào mà họ đang liên kết đến.

Vì vậy, tôi không thấy lý do chính đáng để không sử dụng không gian tên.

+0

Không chắc chắn nếu "không gian tên mặc định của dự án" thực sự là một tính năng chỉ dành cho studio. Khi đọc tài nguyên nhúng từ dll, bạn cần phải thêm tiền tố cho đường dẫn của chúng với “không gian tên mặc định của dự án”. Vì vậy, nó cũng là một khái niệm trong .NET Framework. Có lẽ có một lý do chính đáng cho điều đó ... Và vâng, đây là một jack cao :) –

0

Bỏ phiếu của tôi cho "có" tôi nghĩ rằng đó là thói quen tốt để sử dụng không gian tên. bạn không thể chắc chắn rằng mọi người sẽ không sử dụng cùng tên lớp.

0

Hệ thống cơ bản là không gian tên gốc trong asp.net C#. Trong .net mọi chương trình được tạo với không gian tên mặc định. Không gian tên mặc định này được gọi là không gian tên chung. Nhưng chương trình tự tạo ra bất kỳ số lượng không gian tên, mỗi tên duy nhất.

tìm hiểu thêm http://asp-net-by-parijat.blogspot.in/2015/08/what-is-namespace-in-c-need-of.html