Sự khác biệt (về mặt sử dụng) giữa các không gian tên trong C# và các gói trong Java là gì?Sự khác biệt giữa không gian tên trong C# và gói trong Java
Trả lời
Từ: http://www.javacamp.org/javavscsharp/namespace.html
Java
gói được sử dụng để tổ chức các file hoặc các loại công cộng để tránh xung đột kiểu. Các cấu trúc gói có thể được ánh xạ tới một hệ thống tệp.
system.security.cryptography.AsymmetricAlgorithm aa;
có thể được thay thế:
import system.security.Crypography;
class xxx { ...
AsymmetricAlgorithm aa;
Không có bí danh cho các gói. Bạn phải sử dụng câu lệnh nhập hoặc tên đủ điều kiện để đề cập đến loại cụ thể.
package n1.n2;
class A {}
class B {}
hoặc
package n1.n2;
class A {}
Một tập tin nguồn:
package n1.n2;
class B {}
trọn gói không thể được lồng vào nhau. Một tệp nguồn chỉ có thể có một câu lệnh gói.
C#
Namespaces được sử dụng để tổ chức các chương trình, cả hai như là một hệ thống "nội bộ" tổ chức cho một chương trình, và như một hệ thống tổ chức "bên ngoài".
System.Security.Cryptography.AsymmetricAlgorithm aa;
có thể được thay thế:
using System.Security.Crypography;
AsymmetricAlgorithm aa;
Ngoài ra, người ta có thể chỉ định một bí danh cho các không gian tên, ví dụ:
using myAlias = System.Security.Crypography;
và sau đó tham khảo các lớp học với
myAlias.AsymmetricAlgorithm
namespace N1.N2
{
class A {}
class B {}
}
hoặc
namespace N1
{
namespace N2
{
class A {}
class B {}
}
}
Không có thuật ngữ nào như "không gian tên" trong Java - một gói hành vi là không gian tên trong Java mặc dù, về việc cung cấp phạm vi cho tên. Nó cũng là một phần của mô hình trợ năng.
Từ section 7 of the Java Language Specification:
Các chương trình được tổ chức như bộ gói. Mỗi gói có bộ tên riêng cho các loại, giúp ngăn chặn xung đột tên. Một loại cấp cao nhất có thể truy cập (§6.6) bên ngoài gói khai báo nó chỉ khi loại được công bố công khai.
EDIT: Được rồi, sau khi làm rõ: một gói Java là tương tự đến một # namespace C - ngoại trừ việc nó có ảnh hưởng đến khả năng tiếp cận, trong khi trong C# không gian tên và khả năng tiếp cận hoàn toàn trực giao.
Trong C++/C#, không gian tên chỉ được sử dụng để phân vùng tên để tránh va chạm bằng cách vô tình sử dụng cùng tên cho một biến ở các vị trí khác nhau.
Trong Java, các gói là nhiều hơn thế - các gói được sử dụng cho các mô-đun, khía cạnh đặt tên chỉ là một phần của nó.
Có một vài chi tiết khác nhau.
Trong Java cấu trúc thư mục phải khớp với cấu trúc gói. Không hạn chế như vậy trong C#.
Trong C# bạn có thể có nhiều không gian tên trong một tệp. Trong Java, một tệp thuộc về một gói (xem trước).
Java có quyền truy cập mặc định/gói. C# khả năng truy cập nội bộ đi trong hội đồng.
Nếu bạn sử dụng VS và Eclipse và để chúng cấu trúc dự án, thì bạn sẽ không cảm nhận được sự khác biệt nhiều.
Trong java, bạn có thể áp dụng các thông số truy cập khác nhau cho các lớp sẽ ảnh hưởng đến các gói của bạn.
bảo vệ: truy cập đến cùng một gói và các lớp con của nó trong một gói khác, mặc định: tiếp cận với cùng một gói, công cộng: có thể truy cập, tin: thậm chí không thể truy cập bằng cùng một gói.
Các loại thông số truy cập này không áp dụng cho không gian tên trong c sharp
- 1. Sự khác biệt giữa Gói và Thư mục trong Java
- 2. sự khác biệt giữa không gian tên, gói và mô-đun trong perl là gì?
- 3. Sự khác biệt giữa các lớp và không gian tên?
- 4. Sự khác biệt giữa '.' và "." trong java
- 5. Serialization - sự khác biệt giữa C++ và Java
- 6. Sự khác biệt giữa PriorityQueue và TreeSet trong Java?
- 7. Sự khác biệt giữa gói và gói cài đặt
- 8. Sự khác biệt giữa cấu trúc trong C và C++
- 9. Sự khác biệt giữa mục tiêu-c và java
- 10. Sự khác biệt giữa dài và int trong C#?
- 11. Sự khác biệt giữa System.load() và System.loadLibrary trong Java
- 12. Sự khác biệt giữa Hình ảnh và BufferedImage trong Java
- 13. Sự khác biệt giữa Không gian tên và Tên lắp ráp
- 14. Sự khác biệt giữa tệp tiêu đề và không gian tên là gì?
- 15. Sự khác biệt giữa parseInt và valueOf trong java?
- 16. Sự khác biệt giữa HashMap và Bản đồ trong Java ..?
- 17. Sự khác biệt giữa Executor và ExecutorCompletionservice trong java
- 18. Sự khác biệt trong JIT giữa Java và .Net
- 19. Sự khác biệt giữa '&' và ',' trong Generics Java là gì?
- 20. C++ - Sự khác biệt giữa (*). và ->?
- 21. Sự khác biệt giữa "var" và "đối tượng" trong C#
- 22. sự khác biệt giữa "ifndef" và "if! Defined" trong C?
- 23. sự khác biệt giữa popen() và hệ thống() trong C
- 24. Sự khác biệt giữa _ và tự. trong Mục tiêu-C
- 25. Sự khác biệt giữa char và ký char trong C++?
- 26. Sự khác biệt giữa gói android.opengl và javax.microedition.khronos.opengles là gì?
- 27. Sự khác biệt giữa DatagramSocket và DatagramChannel
- 28. Sự khác biệt giữa. và: trong Lua
- 29. sự khác biệt giữa 'và "trong JavaScript?
- 30. Sự khác biệt giữa! và !! trong yaml?
Tôi muốn nói đến không gian tên trong C# tất nhiên! – Mazzy