Có ai có một ví dụ rất đơn giản về làm thế nào để quá tải các nhà điều hành chuyển nhượng hợp chất trong C#?Cách đơn giản để quá tải toán tử gán phức trong C#?
Trả lời
Bạn không thể quá tải rõ ràng các toán tử gán nhiệm vụ. Tuy nhiên, bạn có thể quá tải toán tử chính và trình biên dịch mở rộng nó.
x += 1
hoàn toàn là cú pháp đường cho x = x + 1
và sau đó là nội dung sẽ được dịch sang. Nếu bạn quá tải toán tử +
, nó sẽ được gọi.
MSDN Operator Overloading Tutorial
public static Complex operator +(Complex c1, Complex c2)
{
return new Complex(c1.real + c2.real, c1.imaginary + c2.imaginary);
}
Bạn không thể quá tải các toán tử đó trong C#.
Bài đăng của Stephan cho biết bạn có thể. Tất nhiên bạn không thể ghi đè nó trực giao từ toán tử +, nhưng hey, về mặt kỹ thuật có thể. – dss539
@ dss539 - Chắc chắn là gián tiếp. Tôi chỉ trả lời câu hỏi của anh ấy. –
@ dss539 - Đó là "kỹ thuật có thể"? Nếu bất cứ điều gì, "về mặt kỹ thuật có thể" là chính xác những gì nó không phải là. –
Theo C# đặc điểm kỹ thuật, + = không có trong danh sách các nhà khai thác overloadable. Tôi giả định, điều này là bởi vì nó là một nhà điều hành chuyển nhượng là tốt, mà không được phép để có được quá tải. Tuy nhiên, không giống như được nêu trong các câu trả lời khác ở đây, 'x + = 1' là không phảicùng một là 'x = x + 1'. Đặc tả C#, "7.17.2 Phân công hợp chất" rất rõ ràng về điều đó:
... the operation is evaluated as x = x op y, except that x is evaluated only once
Phần quan trọng là phần cuối cùng: x chỉ được đánh giá một lần. Vì vậy, trong các trường hợp như thế này:
A[B()] = A[B()] + 1;
nó có thể (và không) tạo sự khác biệt, cách xây dựng câu lệnh của bạn. Nhưng tôi cho rằng, trong hầu hết các trường hợp, sự khác biệt sẽ không đáng kể. (Ngay cả khi tôi vừa mới bắt gặp nó, nó không ở đâu.)
Câu trả lời cho câu hỏi là: người ta không thể ghi đè toán tử + =. Đối với các tình huống, trong đó ý định có thể thực hiện được thông qua các toán tử nhị phân đơn giản, người ta có thể ghi đè toán tử + và lưu trữ một mục tiêu tương tự.
- 1. Toán tử gán quá tải trong C++
- 2. Toán tử gán chồng quá tải C++
- 3. C++: Toán tử quá tải =
- 4. Boolean và String quá tải của toán tử gán (C++)
- 5. Toán tử quá tải + trong C++
- 6. Có cách giải quyết nào để quá tải toán tử gán trong C# không?
- 7. C++ toán tử == quá tải
- 8. Quá tải toán tử trong C++
- 9. Tại sao các toán tử gán quá tải trong VB.NET?
- 10. Quá trình toán tử C++ quá tải
- 11. Quá tải toán tử
- 12. Khi nào sử dụng toán tử gán quá tải?
- 13. Tại sao toán tử gán bản sao quá tải cho một lớp singleton trong C++?
- 14. Quá tải toán tử gián tiếp trong C++
- 15. C++ quá tải toán tử cheatsheet
- 16. đơn giản C++: Làm thế nào để quá tải toán tử nhân để float * myClass và myClass * float hoạt động
- 17. toán tử [] = quá tải?
- 18. Toán tử gán bổ sung quá tải trong C++ cho hai/nhiều hơn hai đối tượng?
- 19. Đơn giản hóa quá tải const?
- 20. Quá tải toán tử toàn cầu mới/xóa trong C++
- 21. Toán tử [] Quá tải trong mảng đa chiều C++
- 22. quá tải toán tử ->
- 23. Toán tử quá tải trong C++ và dereference
- 24. Toán tử quá tải trong F #: (/)
- 25. Quá tải toán tử trong .NET
- 26. Quá tải toán tử trong Java
- 27. C++ quá tải nhiều toán tử cho cùng một toán tử
- 28. Quá tải toán tử + = sự kiện
- 29. Scala: phương thức \ toán tử quá tải
- 30. Vấn đề toán đơn giản trong C#
đây là một bài viết hay về chủ đề của các toán tử quá tải trong C#: http://www.informit.com/articles/article.aspx?p=101373&seqNum=15 – vitorbal
Tôi biết nó có thể bị quá tải theo cách đó, tôi chỉ muốn một ví dụ mã rất đơn giản. Bất kỳ ai? – chris12892
Cảm ơn, đó là chính xác những gì tôi cần – chris12892