Because C# does not enable multiple inheritance, a class cannot directly inherit from more than one base class. This is a design decision designed to prevent the possible ambiguity and complexity that multiple inheritance might bring.
C#, on the other hand, has interface inheritance, which allows a class to implement several interfaces. A contract for a class is defined by an interface, which specifies a set of methods and attributes that the class must implement. Although a class can implement many interfaces, it can only derive from one base class.
Here’s an example of a class that satisfies two interfaces:
public class MyClass: IInterface1, IInterface2 { // Implementation of methods and properties from IInterface1 and IInterface2 }
The MyClass class in the above example implements both the IInterface1 and IInterface2 interfaces. This implies that it must implement all of the methods and attributes described by those interfaces.
While interface inheritance allows a class to implement several sets of methods and attributes, it does not allow for the same level of code reuse that multiple inheritance does in languages that support it.
If you wish to reuse code from many classes in C#, you may use composition rather than inheritance. Composition entails constructing objects of the classes you want to reuse within your new class and delegating necessary tasks to those objects. This allows you to reuse code without the uncertainty and complexity that multiple inheritance might bring.