using System;
public struct DBBool
{
public static readonly True = new DBBool(1);
public static readonly False = new DBBool(-1);
public static readonly Null = new DBBool(0);
private sbyte value;
private DBBool(int val) { value = val; }
public static implicit operator DBBool(bool x)
{
return x ? True : False;
}
public static explicit operator bool(DBBool x)
{
return x.value > 0;
}
public static DBBool operator &(DBBool x , DBBool y)
{
return new DBBool(//...);
}
public static DBBool operator |(DBBool x , DBBool y)
{
return new DBBool(//...);
}
public static bool operator true(DBBool x)
{
return x.value > 0;
}
public static bool operator false(DBBool x)
{
return x.value < 0; //这里出现了问题
}
public static DBBool operator !(DBBool x)
{
return new DBBool(-x.value);
}
}
public class Test
{
static void Main()
{
DBBool blTrue = true;
DBBool blFalse = false;
if(blTrue) //(1)
Console.WriteLine("OK"); //可以执行.
if(blFalse) //(2)
Console.WriteLine("OK"); //为什么这里不能执行?
if(!blFalse) //(3)
Console.WriteLine("OK"); //可以执行.
}
}
(2)在进行if判断时,本来在底层的false运算符内部原以为可以返回true呢?
但是从实际测试后角度出发,预期效果感觉不是按照定义的那样执行结果!
由于重载了运算符"!",从(3)if判断中又可以正常执行,所以使我更加糊涂了!
在(2)中重载的false运算符执行了吗?那么为什么不能返回true呀?
请详细回答!!!!!!!
翻翻过去那场雪
呼啦一阵风