日期:2014-05-17  浏览次数:20979 次

***关于自定义类型转换***
我自己写了下面的类型转换,但是编译的时候一直报错,
有高手知道原因吗?我感觉代码没有问题啊

c#代码

using System;

struct Currency
{
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.01);
}
}

public class Test
{
public static void Main()
{
Currency Balance = new Currency(10,50);
float D = Balance;
}
}


编译的时候,就报错
Currency.cs(21,10): error CS0266: Cannot implicitly convert type 'double' to
        'float'. An explicit conversion exists (are you missing a cast?)
C#

------解决方案--------------------

public static implicit operator float(Currency value)
{
   //return value.Dollars + (value.Cents/100.01);
   return value.Dollars + (value.Cents/100.01f);
}