Когда преобразование типов им не является?

Мне очень часто задают вопрос о логике преобразования типов в языке C#, что, в общем-то, не удивительно. Преобразования типов является распространенной операцией и соответствующие правила довольно запутанные. Вот фрагмент кода, о котором у меня недавно спросили; я упростил его ради ясности: class C<T> {}class D{ public static C<U> M<U>(C<bool> c) { return something; }}public static…

1