Khi nào chúng tôi phải sử dụng extern alias
từ khóa trong C#?Khi nào chúng ta phải sử dụng từ khóa bí danh bên ngoài trong C#?
Trả lời
Về cơ bản bạn chỉ thực sự cần nó khi bạn muốn sử dụng hai loại có cùng tên đủ điều kiện (cùng một không gian tên, cùng tên loại) từ các hội đồng khác nhau. Bạn khai báo một bí danh khác nhau cho mỗi assembly, vì vậy bạn có thể tham khảo chúng thông qua bí danh đó.
Không cần phải nói, bạn nên cố gắng tránh đi vào hoàn cảnh đó để bắt đầu với :)
Anson Horton có good blog post về nó.
Chỉ cần thêm - ngay cả sau khi thêm extern khai báo bí danh ở phía trên cùng của tệp comsumer * .cs, trình biên dịch theo mặc định không tìm kiếm kiểu tôi đang sử dụng (có mặt trong assembly đó). Hành vi mặc định của trình biên dịch luôn luôn là tìm kiếm các lớp và kiểu trong hiện tại và các assembly được tham chiếu có 'global' alias.I kết thúc bằng cách sử dụng tên kiểu đầy đủ bắt đầu với tên bí danh extern tuyên bố bí danh extern của tôi là 'bí danh extern WidgetsVendor1;' và tôi vẫn đang viết mã như 'var wid = new WidgetsVendor1.Widgets.Widget();'. Tôi không thể đơn giản làm-'var wid = new Widgets.Widget() ; ' – RBT
@RBT: Không, chỉ * tuyên bố * bí danh. Nhưng bạn có thể có 'bằng cách sử dụng WidgetsVendor1.Widgets;' và viết 'var wid = new Widget();'. –
ohh. Hấp dẫn! Tôi không biết điều đó. Tôi đăng bình luận của mình dựa trên quan sát của tôi mà tôi có vào buổi sáng. Thật tốt khi biết điều đó. Tôi có thể nhập các không gian tên bên trong bí danh bên ngoài bằng cách sử dụng từ khoá 'using'. Cảm ơn. – RBT
Nó ở đó để giúp bạn trói mình ra khỏi một lỗ sâu thực sự được đào bằng phiên bản. Giả sử phiên bản đầu tiên của chương trình của bạn sử dụng lớp này
using System;
namespace Acme.Financial.Banking {
[Serializable]
public class BankAccount {
public double Balance { get; set; }
//...
}
}
Và bạn đã sắp xếp hàng loạt các bản ghi tài khoản ngân hàng với nó. Và một kế toán bắt đầu phàn nàn về bảng cân đối bị giảm một phần tỷ của một xu, vì vậy bạn thay đổi lớp học:
public decimal Balance { get; set; }
Vấn đề được giải quyết, khách hàng tiếp theo có bảng cân đối hạnh phúc. Cho đến khi bạn được yêu cầu nâng cấp một khách hàng hiện tại với nhiều bản ghi được tuần tự hóa ở định dạng cũ. Vấn đề lớn, bạn không thể deserialize các hồ sơ nữa kể từ khi lớp học đã thay đổi.
bí danh bên ngoài giải quyết vấn đề của bạn, bạn có thể tham chiếu cả phiên bản cũ và phiên bản mới của lớp trong mã của bạn, ngay cả khi tên không gian tên và tên lớp giống nhau.
Trường hợp sử dụng rất sâu sắc để sử dụng bí danh bên ngoài. – RBT
- 1. Khi nào sử dụng "C" bên ngoài?
- 2. Khi nào chúng ta sử dụng ANTLR
- 3. Khi nào chúng ta phải sử dụng toán tử đã chọn trong C#?
- 4. Khi nào chúng ta phải sử dụng các toán tử ngầm và rõ ràng trong C#?
- 5. Tại sao chúng ta sử dụng từ khóa cuối cùng với các lớp bên trong vô danh?
- 6. Khi chúng ta phải sử dụng DBNull.Value, null và "" trong C# .Net?
- 7. Khi nào chúng ta nên sử dụng lớp học và khi chúng ta không nên
- 8. Khi nào chúng ta nên sử dụng mutex và khi nào chúng ta nên sử dụng semaphore
- 9. Tham khảo các tiêu chí bên ngoài truy vấn bí danh từ bên trong một SQLProjection
- 10. Khi nào chúng ta sẽ sử dụng applicationContext.xml trong Spring?
- 11. Khi nào chúng ta phải sử dụng NVARCHAR/NCHAR thay vì VARCHAR/CHAR trong SQL Server?
- 12. T-SQL: sử dụng nhiều bí danh CTE - không chỉ trong truy vấn bên ngoài
- 13. khi nào chúng ta nên sử dụng instanceof và khi không phải
- 14. Vấn đề với từ khóa bên ngoài trong C++
- 15. từ khóa toàn cầu bên ngoài hàm trong php
- 16. Lịch add() vs roll() khi nào chúng ta sử dụng?
- 17. Tại sao chúng ta nên sử dụng mã hóa ui khi chúng ta có Specflow?
- 18. từ khóa cho các lớp bên ngoài từ một lớp bên trong vô danh
- 19. Chúng ta có cần mfence khi sử dụng xchg
- 20. subquery trong TỪ phải có một bí danh
- 21. Chúng ta có nên đóng HttpPostedFile.Inputstream, khi chúng ta đã hoàn thành việc sử dụng nó?
- 22. MVC: tại sao chúng ta cần "điều khiển", hoặc khi nào chúng ta nên sử dụng mẫu này?
- 23. Tại sao chúng ta sử dụng Response.ClearHeaders()?
- 24. Tại sao chúng ta không thể sử dụng các kết nối bên ngoài trong CTE đệ quy?
- 25. tái sử dụng bí danh trong CHỌN
- 26. Sử dụng bí danh trong truy vấn và sử dụng bí danh đó
- 27. Chúng ta có cần đặt "sử dụng nghiêm ngặt" trong các tệp js bên ngoài nếu tệp html của chúng tôi đã "sử dụng nghiêm ngặt" không?
- 28. Sử dụng từ khóa mới trong C#
- 29. Sử dụng bí danh từ câu lệnh JOIN trong FROM
- 30. Tăng sự kiện trong C# từ ứng dụng bên ngoài?
@masoud ramezani +1 cho câu hỏi ... –
Đây là một bài viết về chủ đề này: http://en.csharp-online.net/ECMA-334:_16.3_Extern_alias_directives –