请问各位大侠,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;
        }    }
}