Tại sao nó using namespace std;
được coi là thực hành kém trong C + +, nhưng using System;
được coi là thực hành tốt trong C#? Họ có vẻ tương tự (đưa các công cụ thư viện chuẩn vào không gian tên chung).sử dụng Hệ thống; trong C# vs sử dụng namespace std; trong C++
Trả lời
Vì C# không có chức năng tự do.
Vấn đề với using namespace std
trong C++ là khi trình biên dịch đột nhiên quyết định gọi std::
chức năng thay vì chức năng của bạn mà không phải là đáng ngạc nhiên với những cái tên như count
, distance
hoặc find
là chức năng mẫu mà phải mất bất cứ thứ gì.
Vấn đề này ít hơn nhiều trong C# vì C# không có chức năng tự do và có chuyển đổi ngầm chặt chẽ hơn (ví dụ: bạn không thể chuyển số int
đến hàm mong đợi con trỏ).
Trong C#, chỉ thị using
chỉ tác động đến phạm vi tệp hoặc không gian tên mà nó được đặt.
Nếu bạn bao gồm using namespace std;
trong tệp tiêu đề C++, nó không chỉ tác động đến tệp đó mà là mọi tệp có chứa tệp đó. Điều này tạo ra tiềm năng xung đột trong các tệp của người khác.
Bạn có thể dễ dàng cho rằng đó không phải là "thực hành tốt nhất" trong C#, nhưng rủi ro liên quan thấp hơn đáng kể so với C++ vì nó chỉ tác động đến phạm vi tệp hoặc không gian tên nơi đặt chỉ thị.
Bất cứ nơi nào OP nói về puttig nó vào tiêu đề của mình? Nên thêm một số đối số cho tệp triển khai ... – Deduplicator
- 1. C# sử dụng mạng hệ thống
- 2. Sử dụng hình ảnh hệ thống trong C#
- 3. Sử dụng :: trong C++
- 4. Sử dụng ping trong C#
- 5. Sử dụng NaN trong C++?
- 6. Sử dụng std :: reference_wrapper trong std :: map
- 7. Sử dụng từ khóa ảo trong C++
- 8. sử dụng sendBroadcast trong ứng dụng hệ thống
- 9. cách thu thập thông tin hệ thống trong osx bằng cách sử dụng mục tiêu c
- 10. Nối tiếp trong C# mà không sử dụng hệ thống tệp
- 11. Làm thế nào để sử dụng đúng hệ thống() để thực hiện một lệnh trong C++?
- 12. Sử dụng một hệ thống đơn() Gọi để thực hiện nhiều lệnh trong C
- 13. Sử dụng realloc trong C++
- 14. Genericity vs type-safety? Sử dụng void * trong C
- 15. Sử dụng read() trực tiếp vào C++ std: vector
- 16. Sử dụng các vector trong C++
- 17. Hệ thống có các plugin trong C#
- 18. namespace prefix trong C#
- 19. Chaining chuyển đổi sử dụng trong C++
- 20. C++ - Namespace vs Chức năng tĩnh
- 21. Sử dụng nguyên tử với std :: thread in C++ 11
- 22. Để sử dụng dịch vụ web truyền thống hoặc sử dụng WCF trong VS2008/C#
- 23. Sử dụng C++ 11 unordered_set trong Visual C++ và clang
- 24. sử dụng #define trong C/C++
- 25. Sử dụng mã Python trong C/C++
- 26. Sử dụng enums C cờ trong C++
- 27. Sử dụng C Struct trong Objective C
- 28. Sử dụng C++ trong mục tiêu C++?
- 29. Cách sử dụng mã C trong C++
- 30. sử dụng scanf trong C/C++
Ai nói rằng thực hành tốt trong C#? – Ben
Tôi cho rằng 'sử dụng không gian tên std;' là tốt trong các tệp triển khai; chỉ cần giữ nó ra khỏi tập tin tiêu đề. Tuy nhiên, có những lựa chọn thay thế đẹp hơn và rõ ràng hơn như 'using std :: cout;' thay vào đó. – Suedocode
bản sao có thể có của [Tại sao "sử dụng không gian tên std;" coi là hành vi xấu?] (http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice) – Deduplicator