这个问题已经在这里有一个答案:
- 为什么我不能确定这两种隐性和显性运营商? 2个回答
为什么不能在同一类同一类型的两个运营商(显性和隐性)共存? 假设我有以下几点:
public class Fahrenheit
{
public float Degrees { get; set; }
public Fahrenheit(float degrees)
{
Degrees = degrees;
}
public static explicit operator Celsius(Fahrenheit f)
{
return new Celsius(ToCelsius(f.Degrees));
}
public static implicit operator Celsius(Fahrenheit f)
{
return new Celsius(ToCelsius(f.Degrees));
}
}
public class Celsius {
public float Degrees { get; set; }
public Celsius(float degrees)
{
Degrees = degrees;
}
}
所以,我可以给客户使用的两种方法之一,例如可能性:
Fahrenheit f = new Fahrenheit(20);
Celsius c1 = (Celsius)f;
Celsius c2 = f;
有,为什么这是不允许的,或只是一个约定,以避免程序员的误用什么特殊原因?