thể trùng lặp:
Why can't I use interface with explicit operator?Tại sao C# không cho phép các loại sử dụng bố cục để có chuyển đổi ngầm cho giao diện?
Khi tôi làm điều này:
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);
}
}
tôi nhận được một lỗi biên dịch như thế này:
'ImageEditor.Effect .imp nhà điều hành licit ImageEditor.IEffect (ImageEditor.Effect) ': chuyển đổi do người dùng xác định đến hoặc từ giao diện không được phép.
Tại sao chúng không được phép? Đây không phải là một thực hành tốt?
Bản sao có thể có của: http://stackoverflow.com/questions/2433204/why-cant-i-use-interface-with-explicit-operator –