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