Như tiêu đề cho thấy, làm thế nào để hai phân biệt với nhau? Chúng ta có an toàn khi nói cả hai đều giống nhau không? Khi nào thì trường hợp tốt nhất chúng ta chọn cái kia? Tôi chỉ tình cờ gặp nó và tôi không chắc lắm. Tôi hy vọng ai đó có thể xóa bỏ những nghi ngờ của tôi. Cảm ơn trước.Sự khác biệt giữa this.GetType(). Assembly.GetName() Phiên bản và Assembly.GetExecutingAssembly(). GetName(). Phiên bản?
Trả lời
this.GetType()
lấy loại đa hình của cá thể hiện tại, thực tế có thể là lớp con của lớp bạn đang gọi this.GetType()
từ và lớp con đó có thể nằm trong một hội đồng khác.
xem xét như sau:
AssemblyA.dll:
public class Foo
{
public void PrintAssembly()
{
Console.WriteLine(this.GetType().Assembly.GetName());
Console.WriteLine(Assembly.GetExecutingAssembly().GetName());
}
}
AssemblyB.dll:
public class Bar : Foo
{
}
Bây giờ nếu bạn chạy các đoạn mã sau:
Bar b = new Bar();
b.PrintAssembly();
Các kết quả của hai cách để xác định hội đồng sẽ không phải là giống nhau; this.GetType().Assembly
sẽ trả về AssemblyB (vì loại thực tế là this
là Bar
), trong khi Assembly.GetExecutingAssembly()
trả về AssemblyA, vì đó là assembly có chứa phương thức Foo.PrintAssembly()
.
Lần duy nhất bạn có thể chắc chắn rằng chúng tham chiếu đến cùng một cụm là nếu loại có chứa lệnh gọi đến this.GetType()
được niêm phong.
Một thông báo cho bạn biết phiên bản của Loại Lắp ráp thuộc về. Các khác cho bạn biết phiên bản của hội đồng hiện đang thực hiện. Nhưng bạn có biết rằng đã có.
Tôi tin rằng bạn có thể giả định một cách an toàn rằng assembly thực thi luôn giống như assembly mà 'this' là một phần của. Ít nhất thì tôi cũng không thể nghĩ tại sao nó không như vậy.
Cho dù bạn chọn cái này hay cái kia, vì mục đích rõ ràng, sẽ phụ thuộc vào việc bạn đang tìm kiếm lắp ráp loại hay lắp ráp đang thực hiện. Giả sử bố và sếp của bạn là cùng một người ... bạn có coi anh ta là ông chủ của bạn ở bàn ăn không? Hay bạn giới thiệu anh ta với bạn gái làm sếp của bạn? Sử dụng cái sẽ hợp lý với người tiếp theo đọc mã của bạn.
Giải thích tuyệt vời, Brandon. Cảm ơn rất nhiều. – woodykiddy
@woodykiddy Chào mừng bạn, nhưng khi nó quay ra bạn chỉ nên chú ý đến đoạn 1 và 3 :) –
Không phải lo lắng. Tất cả chúng ta đều đã học được. :) – woodykiddy
- 1. Sự khác biệt giữa "Phiên bản cũ" và "Phiên bản ổn định" là gì?
- 2. MATLAB: Sự khác biệt giữa các phiên bản .mat
- 3. Sự khác biệt giữa cookie và phiên?
- 4. Sự khác nhau giữa Phiên bản và 'Phiên bản thời gian chạy' trong .Net là gì?
- 5. Sự khác biệt thực sự giữa Phiên bản Hệ điều hành SDK và Phiên bản Triển khai hoặc Phiên bản Hệ điều hành Triển khai là gì?
- 6. Sự khác biệt giữa "Thread.currentThread(). GetName" và "this.getName" là gì?
- 7. Sự khác biệt phiên bản API Google Maps
- 8. Sự khác biệt giữa VB.NET và các phiên bản trước của VB là gì?
- 9. Sự khác biệt giữa Google Map Phiên bản trả tiền và không phải trả tiền
- 10. Sự khác biệt giữa Phiên và Cookie là gì?
- 11. Rails v2.3: Sự khác biệt giữa phiên và cookie
- 12. Nhận được sự khác biệt giữa hai phiên bản đầu của một tệp trong CVS
- 13. sự khác biệt cơ bản giữa elseif và khác nếu
- 14. khác biệt trong thiết kế bố trí android giữa các phiên bản 2.3.3 và 4+
- 15. Sự khác biệt giữa hai bản đồ
- 16. Phiên bản tệp Vs. Phiên bản sản phẩm
- 17. Sự khác nhau giữa Microsoft.Office.Interop. * Phiên bản 12 và 14 là gì?
- 18. Lấy Phiên bản Lắp ráp từ AssemblyInfo.cs
- 19. Hiệu suất khác biệt giữa phương pháp .NET (trong .dll) và phiên bản phản chiếu
- 20. Xcode/Cocoa: Sự khác biệt giữa bản dựng gỡ lỗi và bản phát hành là gì?
- 21. Sự khác biệt giữa CruiseControl (bản gốc) và CruiseControl.NET
- 22. Sự khác biệt giữa HashMap và Bản đồ trong Java ..?
- 23. Sự khác biệt giữa 'nội dung' và 'văn bản'
- 24. Sự khác biệt giữa bản đồ và mỗi
- 25. XPath - Sự khác biệt giữa nút() và văn bản()
- 26. Sự khác biệt giữa bản đồ và dict
- 27. Phiên bản C# và Phiên bản .NET Framework?
- 28. Có sự khác biệt nào trong các phiên bản VBA giữa văn phòng 2003 và 2007 không?
- 29. Có sự khác biệt về hiệu suất giữa các phiên bản SQL Server Web và Express không?
- 30. Sự khác nhau giữa phiên bản phát hành và tích hợp là gì?
Bạn có chắc chắn về logic đó không? –
@ Brandon: Vâng, tôi. :) – Sven
Vâng +1 trong trường hợp đó! –