A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于振发 中级黑马   /  2013-9-25 23:34  /  1498 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 于振发 于 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 ");
        }
    }
}
问题就在注释中,还望指教        

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

2 个回复

倒序浏览
都不是同一个方法,怎么会重载???

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
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这个方法了

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马