请问各位大侠,c#中return new Hmm(i);等同于Hmm a = new Hmm(int i); return a; 我知道Hmm a = new Hmm(int i);是创建一个Hmm类的实例a,同时调用Hmm类的构造函数,把i值带到构造函数中去计算。但我不明白return a;返回的是一个Hmm类的对象a,比如我要在main()函数中输出该返回值,那么输出的将会是什么呢?是不是输出的是构造函数中计算出的值类型数据,因为类的对象可以说是引用类型的数据,而引用类型的数据不可能有一个具体的值。
参考代码:using System.Collections.Generic;
using System.Linq;
using System.Text;namespace 操作符重载
{
class Program
{
static void Main(string[] args)
{ //输出前十个素数
Prime p1 = new Prime(1);
for (int i1 = 0; i1 < 10; i1++)
Console.WriteLine(p1++);
//输出100到300之间的所有素数
for (uint i2 = 100; i2 < 300; i2++)
{
Prime p2=new Prime(i2);
if (p2)
Console.Write("{0} ", (uint)p2);
}
Console.ReadLine();
}
}
public class Prime
{
private uint m_value;
public uint value
{
get {return m_value;}
}
public Prime(uint value)
{
m_value=value;
}
//重载二元操作符+
public static uint operator +(Prime p1, Prime p2)
{
return p1.m_value + p2.m_value;
}
//重载二元操作符-
/* public static uint operator -(Prime p1, Prime p2)
{
return (int)(p1.m_value - p2.m_value);
}*/
//重载一元操作符++
public static Prime operator ++(Prime p)
{
for (uint i = p.m_value + 1; ; i++)
if (IsPrime(i))
return new Prime(i);
}
//重载一元操作符--
public static Prime operator --(Prime p)
{
for (uint i = p.m_value - 1; i >= 2; i--)
{
if (IsPrime(i))
return new Prime(i);
}
return new Prime(1);
}
//重载布尔操作符true
public static bool operator true(Prime p)
{
return IsPrime(p.m_value);
}
//重载布尔操作符false
public static bool operator false(Prime p)
{
return !IsPrime(p.m_value);
}
//重载类型转换操作符(uint)
public static implicit operator uint(Prime p)
{
return p.m_value;
}
//判断一个数是否为素数
public static bool IsPrime(uint x)
{
for (uint i = 2; i <= x / 2; i++)
if (x % i == 0)
return false;
return true;
} }
}
参考代码:using System.Collections.Generic;
using System.Linq;
using System.Text;namespace 操作符重载
{
class Program
{
static void Main(string[] args)
{ //输出前十个素数
Prime p1 = new Prime(1);
for (int i1 = 0; i1 < 10; i1++)
Console.WriteLine(p1++);
//输出100到300之间的所有素数
for (uint i2 = 100; i2 < 300; i2++)
{
Prime p2=new Prime(i2);
if (p2)
Console.Write("{0} ", (uint)p2);
}
Console.ReadLine();
}
}
public class Prime
{
private uint m_value;
public uint value
{
get {return m_value;}
}
public Prime(uint value)
{
m_value=value;
}
//重载二元操作符+
public static uint operator +(Prime p1, Prime p2)
{
return p1.m_value + p2.m_value;
}
//重载二元操作符-
/* public static uint operator -(Prime p1, Prime p2)
{
return (int)(p1.m_value - p2.m_value);
}*/
//重载一元操作符++
public static Prime operator ++(Prime p)
{
for (uint i = p.m_value + 1; ; i++)
if (IsPrime(i))
return new Prime(i);
}
//重载一元操作符--
public static Prime operator --(Prime p)
{
for (uint i = p.m_value - 1; i >= 2; i--)
{
if (IsPrime(i))
return new Prime(i);
}
return new Prime(1);
}
//重载布尔操作符true
public static bool operator true(Prime p)
{
return IsPrime(p.m_value);
}
//重载布尔操作符false
public static bool operator false(Prime p)
{
return !IsPrime(p.m_value);
}
//重载类型转换操作符(uint)
public static implicit operator uint(Prime p)
{
return p.m_value;
}
//判断一个数是否为素数
public static bool IsPrime(uint x)
{
for (uint i = 2; i <= x / 2; i++)
if (x % i == 0)
return false;
return true;
} }
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货