มีตัวดำเนินการแปลก ๆ สองตัวใน C #:
- ที่ ดำเนินการที่แท้จริง
- ตัวดำเนินการเท็จ
ถ้าฉันเข้าใจถูกต้องตัวดำเนินการเหล่านี้สามารถใช้ในประเภทที่ฉันต้องการใช้แทนนิพจน์บูลีนและฉันไม่ต้องการให้การแปลงโดยนัยเป็นบูล
สมมติว่าฉันมีคลาสต่อไปนี้:
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;
}
}
ดังนั้นฉันสามารถเขียนโค้ดต่อไปนี้:
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)
อย่างไรก็ตามสำหรับตัวอย่างทั้งหมดข้างต้นจะดำเนินการตัวดำเนินการที่แท้จริงเท่านั้น แล้วตัวดำเนินการเท็จใน C # มีไว้เพื่ออะไร?
หมายเหตุ: ตัวอย่างเพิ่มเติมสามารถพบได้ที่นี่ , ที่นี่และที่นี่