Позвольте мне придерживаться ясности в изложении этого вопроса, поскольку множественное наследование обсуждали во многих группах новостей и рассылках:
С# не поддерживает
множественное наследование. Но вы можете объединять характеристики поведения Нескольких программных сущностей, реализовав несколько интерфейсов. Об интерфейсах и способах работы с ними см. главу 9. А пока вы можете думать об интерфейсах на С#, как вы думаете о СОМ-интерфейсах. \ С учетом этого следующая программа ошибочна: \
class Foo
{
}
class Bar
<
>
class MITest : Foo, Bar {
public static void Main ()
{
} }
Допущенная в этом примере ошибка связана со способом реализации интерфейсов. Интерфейсы, выбранные для реализации, перечисляются после базового класса данного класса. В этом примере компилятор С# думает, что
Ваг
должен быть интерфейсом. Поэтому компилятор С# выдаст вам сообщение об ошибке:
'Bar':type in interface list is not an interface
Следующий, более реалистичный, пример абсолютно верен, так как класс
MyFancyGrid
происходит от
Control
и реализует интерфейсы
ISeria-lizable
и
IDataBound:
class Control
{
}
interface ISerializable
{
}
interface IDataBound
{
}
class MyFancyGrid : Control, ISerializable, IDataBound
{
}
Главное здесь то, что единственным способом реализации чего-либо, напоминающим множественное наследование, на С# является применение интерфейсов.