User-Defined Conversions: How It Works: Conversion Lookup
// This demo has compiling error class S { } class TBase { } class T: TBase { public static implicit operator T(S s) { return(new T()); } } public class ConversionLookup1 { public static void Main() { S myS = new S(); TBase tb = (TBase) myS; } }