日期:2014-05-18  浏览次数:20461 次

我想重载true和false怎么做
rt

------解决方案--------------------
public class T
{
public int _x;
public T(int x)
{
this._x = x;
}
public static bool operator true(T x)
{
return x._x % 2 == 0;
}
public static bool operator false(T x)
{
return x._x % 2 != 0;
}
}
class Program
{
static void Main(string[] args)
{
T t2 = new T(2);
T t1 = new T(1);
if (t2)
{
Console.WriteLine(true);
}
}
}
------解决方案--------------------
写个例子程序,就明白了。
public class MyClass
{
public static bool operator true(MyClass my)
{
if (my.test1 == true && my.test2 != true)
return true;
else if (my.test1 != true && my.test2 == true)
return true;
else return false;
}

public static bool operator false(MyClass my)
{
if (my.test1 == true && my.test2 != true)
return true;
else if (my.test1 != true && my.test2 == true)
return true;
else return false;
}

public bool test1;
public bool test2;


}

class Program
{
public static void Main()
{
MyClass my=new MyClass();
my.test1 = true;
my.test2 = false;
if (my)
Console.WriteLine( "first true ");
else
Console.WriteLine( "first false ");
my.test1 = false;
if (my)
Console.WriteLine( "second true ");
else
Console.WriteLine( "second false ");
Console.ReadKey();
}
}
------解决方案--------------------
operator true(MyClass my)形成了从MyClass到bool的隐式转换,这个运算符的重载感觉比较像隐式转换重载,有了这个,就相当于重载了||和&&运算符(这个才是重点)。当然也可能有其他作用,这个东西用得不多,我也就是了解到这个程度。