При создании C#, ровно как и Java основная задача - снижение прога входа, относительно С++
Одной из проблем - является множсетвенное наследование. Беда в том, что на практике инструмент наследования используется как инструмент повторного использования кода, хотя таковым он не является. В таком случае при довольно разветвленном проектирование возникает проблема ромба.
В
ромбовидном наследовании, может появится ситуация, когда оба класса родителя переопределили метод базового интерфейса. И когда, в свою очередь программист пытается задействовать метод класса, используя тот самый базовый интерфейс, он попадает в ад.
Итого, вопрос, которые в плюсах решается организационным образом в C# решен технически.