可能重複:
Why can't I use interface with explicit operator?爲什麼C#不允許使用合成對接口進行隱式轉換的類型?
當我這樣做:
public struct Effect
{
public IEffect IEffect { get; private set; }
public Effect (IEffect effect)
{
this.IEffect = effect;
}
public static implicit operator IEffect (Effect effect)
{
return effect.IEffect;
}
public static explicit operator Effect (IEffect effect)
{
return new Effect (effect);
}
}
我得到一個編譯錯誤是這樣的:
「ImageEditor.Effect .imp合法運營商 ImageEditor.IEffect(ImageEditor.Effect)': 不允許用戶自定義轉換到或來自 接口。
爲什麼他們不允許?這不是一個好習慣嗎?
可能的重複:http://stackoverflow.com/questions/2433204/why-cant-i-use-interface-with-explicit-operator – 2011-01-31 18:33:32