日期:2014-05-18  浏览次数:20717 次

简单数据类型转换问题
Console.WriteLine()重载方法的首选方式为什么是:Currency -》float-》double//书上的例子
为什么不是:Currency -》float
C# code

   struct Currency
    {
        private delegate string GetAstring(); 
        public uint Dollars;
        public ushort Cents;
        public Currency(uint Dollars, ushort Cents)
        {
            this.Dollars = Dollars;
            this.Cents = Cents;
        }
        public override string ToString()
        {
            return string.Format("${0}.{1,-2:00}", Dollars, Cents);
        }
        public static implicit operator float(Currency value)
        {
            return value.Dollars + (value.Cents / 100.0f);
        }
         static void Main(string[] args)
        {
           
            Currency balance = new Currency(50,35); 
            Console.WriteLine(balance);  //这里有疑问

        }




------解决方案--------------------
struct是一种值类型,自然继承自object

Currency继承自object

而不是继承自float

Console.WriteLine()没有重载Currency,所以重载列表里面选择了自己的父类。