using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 测试3
{
class Program
{
static void Main(string[] args)
{
for (uint i = 50; i <= 100; i++)
{
Prime p1 = new Prime(i);
if (p1)
{
Console.WriteLine((uint)i);
}
}
Console.Read();
}
}
class Prime
{
public uint x;
public Prime(uint x1)
{
x = x1;
}
public static bool operator true(Prime p)
{
for(uint i=2;i<=p.x/2;i++)
if(p.x % i==0)
return false ;
return true;
}
public static bool operator false(Prime p)
{
for (uint i = 2; i <= p.x / 2; i++)
if (p.x % i == 0)
return true ;
return false;
}
}
}
if (p1)什么意思?
Prime类重载了true和false操作,if (p1)就是如果是素数
if (p1==true)
p1在哪里带上的ture和false值的?
因为重载了P1的true和false的1元操作符,所以在执行 Prime p1 = new Prime(i); 后执行if(P1)的时候会重新计算一下P1的true和false操作符,并且返回回来有效的bool值
刚开始的p.x=50;那是执行重载的true还是false?为什么测试的时候上来就执行true?
@FrankYang2014:
应该==时候都执行true
只有!=时候采取执行false
试试吧,理论上,开关操作符,我也没有具体断过