Có hai nhà khai thác lạ trong C#:Toán tử giả trong C# tốt là gì?
- các true operator
- các false operator
Nếu tôi hiểu đúng này các nhà khai thác có thể được sử dụng trong các loại mà tôi muốn sử dụng thay vì một boolean biểu thức và nơi tôi không muốn cung cấp một chuyển đổi ẩn thành bool.
Hãy nói rằng tôi có một lớp học sau đây:
public class MyType
{
public readonly int Value;
public MyType(int value)
{
Value = value;
}
public static bool operator true (MyType mt)
{
return mt.Value > 0;
}
public static bool operator false (MyType mt)
{
return mt.Value < 0;
}
}
Vì vậy, tôi có thể viết đoạn mã sau:
MyType mTrue = new MyType(100);
MyType mFalse = new MyType(-100);
MyType mDontKnow = new MyType(0);
if (mTrue)
{
// Do something.
}
while (mFalse)
{
// Do something else.
}
do
{
// Another code comes here.
} while (mDontKnow)
Tuy nhiên đối với tất cả các ví dụ trên chỉ là điều hành đúng được thực thi. Vậy toán tử giả trong C# tốt là gì?
Lưu ý: Bạn có thể tìm thêm các ví dụ khác here, here và here.
Tài liệu hiện đại có thể được tìm thấy tại https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/false-operator. Các tài liệu cho rằng không có lý do gì để định nghĩa toán tử này nữa vì C# 2.0 đã thêm các kiểu nullable. –