Tôi đã đọc về quá tải đúng và sai trong C#, và tôi nghĩ rằng tôi hiểu sự khác biệt cơ bản giữa điều này và xác định một toán tử bool. Ví dụ tôi thấy xung quanh là một cái gì đó như:Tại sao quá tải đúng và sai thay vì xác định toán tử bool?
public static bool operator true(Foo foo) {
return (foo.PropA > 0);
}
public static bool operator false(Foo foo) {
return (foo.PropA <= 0);
}
Đối với tôi, đây là giống như nói:
public static implicit operator bool(Foo foo) {
return (foo.PropA > 0);
}
Sự khác biệt, như xa như tôi có thể nói, đó là bằng cách định nghĩa đúng và sai riêng biệt, bạn có thể có một đối tượng vừa đúng và sai hoặc không đúng hoặc sai:
public static bool operator true(Foo foo) { return true; }
public static bool operator false(Foo foo) { return true; }
//or
public static bool operator true(Foo foo) { return false; }
public static bool operator false(Foo foo) { return false; }
Tôi chắc chắn có lý do được phép, nhưng tôi không thể nghĩ nó là gì. Với tôi, nếu bạn muốn một đối tượng có thể được chuyển đổi thành true hoặc false, thì một toán tử bool đơn giản nhất.
Có ai có thể cho tôi một kịch bản có ý nghĩa khi làm theo cách khác không?
Cảm ơn
Tôi vừa tìm thấy các toán tử này và thực hiện một số thử nghiệm. Có vẻ như 'if' chỉ sử dụng toán tử' true', và 'if (! MyObj)' là không thể, vì vậy không có điểm (nào) trong việc thực thi toán tử 'false' mâu thuẫn. Tôi đã bỏ lỡ bất cứ điều gì? Làm thế nào tôi có thể sử dụng toán tử 'false'? – ygoe