Tại sao C# yêu cầu các toán tử quá tải là các phương thức tĩnh chứ không phải các hàm thành viên (như C++)? (Có lẽ cụ thể hơn: động lực thiết kế cho quyết định này là gì?)Tại sao C# quá tải của nhà điều hành phải là tĩnh?
Trả lời
Hãy xem this post.
Một vài lý do, dường như chính là để bảo toàn tính đối xứng của nhà điều hành (như phía bên tay trái của thao tác nhị phân không được xử lý đặc biệt, vì chịu trách nhiệm điều phối hoạt động).
trả lời một cách chi tiết dữ dội ở đây:
Ngoài ra còn có một điểm tinh vi hơn về kiểu giá trị và các nhà khai thác ví dụ. Toán tử tĩnh làm cho loại mã này có thể:
class Blah {
int m_iVal;
public static Blah operator+ (Blah l, int intVal)
{
if(l == null)
l = new Blah();
l.m_iVal += intVal;
return l;
}
}
//main
Blah b = null;
b = b + 5;
Vì vậy, bạn có thể gọi toán tử, mặc dù tham chiếu là rỗng. Điều này sẽ không phải là trường hợp cho các nhà khai thác dụ.
Có lẽ cách tốt nhất để suy nghĩ tại sao các phương pháp không được tĩnh. Không cần cho nhà nước và do đó điều này.
Có thể không có lợi ích của nhà nước nhưng có quá tải toán tử ảo sẽ rất tuyệt. Điều nhà nước không phải là lý do tại sao nó không có sẵn trong C#. –
- 1. quá tải nhà điều hành C++
- 2. Mẫu quá tải nhà điều hành ostream
- 3. Tình trạng quá tải của nhà điều hành toàn cầu?
- 4. Tại sao C# không hỗ trợ quá tải cho nhà điều hành bằng cách tham chiếu?
- 5. Lười biếng, quá tải C++ && nhà điều hành?
- 6. Quá tải + Nhà điều hành Với Mẫu
- 7. Quá tải nhà điều hành trong Clojure
- 8. Nhà điều hành C++ * "đã quá tải chưa?"
- 9. C++ Typedefs và điều hành quá tải
- 10. Quá tải nhà điều hành chuyển đổi loại toàn cầu
- 11. điều hành quá tải trong C
- 12. quá tải << nhà điều hành và đệ quy
- 13. Loại xung đột trong quá tải nhà điều hành mẫu
- 14. Quá tải nhà điều hành thanh lịch trong D
- 15. Câu hỏi về quá tải nhà điều hành
- 16. lỗi Strange với một nhà điều hành templated quá tải
- 17. quá tải -> điều hành trong C++
- 18. R quá tải nhà điều hành đơn nhất: rủi ro?
- 19. Nhà điều hành luồng quá tải an toàn >>
- 20. unary nhà điều hành phủ định quá tải trong D
- 21. Trường hợp quá tải nhà điều hành không phải là thành viên sẽ được đặt ở đâu?
- 22. Tại sao scanf phải lấy địa chỉ của nhà điều hành
- 23. Hành vi của nhà điều hành sizeof trong C
- 24. phân công điều hành quá tải trong C++
- 25. Có cần thiết để quá tải vị trí nhà điều hành mới, khi chúng tôi quá tải nhà điều hành mới?
- 26. Điều gì là sự tinh tế của, nhà điều hành?
- 27. Quá trình vận hành tĩnh C++
- 28. C# Nhà điều hành có điều kiện Không phải là tuyên bố?
- 29. C++ ít quá tải nhà điều hành, có cách nào để sử dụng?
- 30. điều hành quá tải trong C++ như int + obj
C++ cho phép các toán tử được miễn phí (ví dụ: không phải thành viên). Nhưng C# đã quyết định đặt lệnh cấm Stalin vào các chức năng miễn phí, vì vậy bạn phải đặt tĩnh ở đó. –