黑马程序员技术交流社区

标题: true与false的重载 [打印本页]

作者: 于振发    时间: 2013-9-25 23:34
标题: true与false的重载
本帖最后由 于振发 于 2013-9-26 17:09 编辑

                                                                                                                                                                                                                                using System;
partial class Test
{
    int num1, num2, num3;
    public Test(int i, int j, int z)
    {
        num1 = i;
        num2 = j;
        num3 = z;
    }
    public static bool operator true(Test op)
    {
        if (op.num1 != 0 || op.num2 != 0 || op.num3 != 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
     public static bool operator false(Test op)
    {
        if ((op.num1 == 0) && (op.num2 == 0) && (op.num3 == 0))
        {
            return true;   //为什么这里的true 换成 false 对结果一点都没有影响呢?
        }
        else
        {
            return false;  // 这里也是一样,换成 true 也没有影响结果?
        }
    }
     public static Test operator --(Test op)
     {
         op.num1--;
         op.num2--;
         op.num3--;
         return op;
     }
     public void show()
     {
         Console.WriteLine("{0} {1} {2}", num1, num2, num3);
     }
}
class me
{
    static void Main()
    {
        Test obj1 = new Test(10, 10, 10);
        while (obj1)
        {
            obj1.show();
            obj1--;
            //Console.WriteLine("obj1 is a ");
        }
    }
}
问题就在注释中,还望指教        

作者: 黑色海    时间: 2013-9-26 09:50
都不是同一个方法,怎么会重载???
作者: 段朝骞    时间: 2013-9-26 12:59
public static bool operator true(Test op){}
public static bool operator false(Test op){}
这两个方法就不是重载

而且public static bool operator false(Test op){}这个方法根本就没执行到

while(obj1)只执行了true这个方法
改成while(!obj1)就执行false这个方法了






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2