Разница между несколькими наследованиями и интерфейсами в C # -- c# поле с участием .net пол Связанный проблема

Difference between multiple inheritance and interfaces in c#


1
vote

проблема

русский

делает C # действительно поддерживать многократное наследование. Люди говорят, что он поддерживает многократное наследование в виде интерфейсов? Но я не думаю, что так

Английский оригинал

Does c# really support multiple inheritance. People say it supports multiple inheritance in the form of interfaces ? But I dont think so

</div
     

Список ответов

7
 
vote
vote
Лучший ответ
 

в буквальном смысле, он не поддерживает многонациональность. Он может реализует несколько интерфейсов с несколькими интерфейсами, которые предлагают полиморфное поведение, поэтому принесите вам некоторые преимущества нескольких наследований. Однако вы не получаете базового поведения.

Если вам нужно базовое поведение, общая тактика предназначена для базового класса для реализации интерфейсов и полученных классов, чтобы переопределить эту реализацию, где требуется.

Я еще не сталкивался с необходимостью многонационального наследования, я не думаю, что C # страдает от этого.

 

In the literal sense, it does not support multiple inheritance. It can implement multiple interfaces, which offer polymorphic behaviour, so get you some benefits of multiple inheritance. However you get no base behaviour.

If you need the base behaviour a common tactic is for a base class to implement the interfaces and for derived classes to override this implementation where required.

I have yet to run into the need for multiple inheritance, I don't think C# suffers for the lack of it.

</div
 
 
       
       
1
 
vote

В теории объектных ориентированных языков есть две концепции, которые часто смешаются вместе, когда говорят о наследовании в C # / Java / etc.

SUBTYPANCE означает, что один класс может быть написан таким образом, чтобы он мог быть выбран (или рассматриваться как) какой-то другой прощенный тип (называемый Supertype ). В условиях C # это означает, что вы можете передавать объект к способу, в котором ожидается родительский класс или интерфейс. Объект в C # может четко иметь несколько супертипов (родитель + как можно больше интерфейсов, сколько вы хотите)

<Сильные> Подклассы означает, что тип наследует реализацию от какого-либо другого типа. В C # это происходит, когда у вас есть родительский класс, но не при выполнении интерфейса (потому что вы не нанесете любую реализацию от интерфейса). Итак, C # позволяет иметь только один суперкласс (= родительский класс).

 

In theory of object oriented languages, there are two concepts that are often mixed together when talking about inheritance in C#/Java/etc.

Subtyping means that a single class can be written in a way that it can be casted to (or viewed as) some other simpler type (called supertype). In C# terms, this means that you can pass an object to a method where a parent class or an interface is expected. An object in C# can clearly have multiple supertypes (parent + as many interfaces as you want)

Subclassing means that a type inherits implementation from some other type. In C# this happens when you have a parent class, but not when you're implementing an interface (because you don't inherit any implementation from the interface). So, C# allows you to have only a single superclass (=parent class).

</div
 
 
0
 
vote

Реализация по поводу делегирования (IOD) - это очень простые методы кодирования, которые позволяют разработчикам быструю реализацию системных интерфейсов и Многократное наследование в C # (я знаю: он не поддерживается :))

.

Ну вся идея в основном имеет классное поле желаемого типа и выставить функциональные возможности общедоступных свойств класса на основе скрытых вызовов на поле участника

Так что, если у нас есть что-то вроде класса A и класс B, а родители класса C. Пример этой ситуации может быть так, когда у нас будет контроль пользователя, который должен иметь возможность обрабатывать и представить список клиентов / P >.

Потому что управление пользователями и списками являются классами бота, которые вы не могли сделать это напрямую, наследовая, потому что нет поддержки нескольких наследований в случае C # (и я доволен этим, потому что я думаю, что множественное наследование, когда нет Правильно использованный очень часто приводит к классу взрывооборовень антишёта)

 

Implementation over delegation (IOD) is a very simple coding techniques which allows a developers fast implementation of an system interfaces and multiple inheritance in C# (I know:It is not supported :))

Well the whole idea is basically to have a class field of desired type and to expose functionality public properties of the class based on hidden calls to the member field

So if we have something like Class A and Class B are parents of a Class C.An example of that situation could be the case when we would have a user control which should be able to handle and present a list of customers

Because user control and List are bot classes you couldn't do that directly, by inheriting, because there is no support for multiple inheritance in the case of c# (and I'm happy with that because I think multiple inheritance when not properly used very often leads to class explosion anti pattern)

</div
 
 
0
 
vote

языковые дизайнеры решили не разрешать многократному наследству в C #. Он был обсуждается ранее .

.
 

The language designers decided not to allow multiple inheritance in C#. It has been discussed before.

</div
 
 

Связанный проблема

0  C # сделать в то время как Unassigned локальной проблемы переменной  ( C sharp do while unassigned local variable problem ) 
<Р> Я после C # курса и пытаюсь обновить мой метод ввода пользователя, чтобы проверить, если введенная входную консоль целое. Я написал сам в то время как сдел...

1  Как я могу прочитать все предметы питания?  ( How do i read all feed items ) 
Я хочу прочитать все элементы подачи в C #. Решения, которые я обнаружил, только для новейших элементов, таких как только последние 10 дней. У кого-нибудь е...

3  Как мне расположить эллипс на сетке Silverlight?  ( How do i position an ellipse on a silverlight grid ) 
Я создаю приложение Silverlight, которое позволит вам нажать в два места на экране и нарисовать эллипс, основной ось которого начинается и заканчивается в мес...

0  Как нарисовать в автономном режиме круг 1500 метров в диапазоне Geocoordinate в Windows Phone 8  ( How to draw offline circle of 1500 meters range over the geocoordinate in window ) 
Я хочу нарисовать автономный круг над геокоординаном в Windows Phone Этот круг составляет 1500 метров, и он ищет цель в этом диапазоне это мой образ, где у...

4  Как написать на пользовательский журнал событий?  ( How to write to a custom event log ) 
Я пытаюсь получить мою службу .NET Windows вправо на пользовательский журнал событий. Я использую <код> EventLogInstaller , чтобы создать журнал событий и ист...

0  Присоединиться к запросу с LINQ  ( Join query with linq ) 
Я пытаюсь здесь сделать несколько левых присоединиться к запросу LINQ, но я бы сказал, что понятия не имею, как материализовать эту идею. в основном вот 3 с...

0  Ошибка структуры объекта: ошибка загрузки указанного ресурса метаданных  ( Entity framework error error loading specified metadata resource ) 
Я знаю, что это известная проблема, но решение для моего случая не в других вопросах, я думаю. У меня есть проект в C #. В этом проекте у меня есть мой EDMX...

5  Можем ли мы использовать ответ .Flush () вместо ответа. Денды ()  ( Can we use response flush instead of response end ) 
<Код> Response.End() генерирует <код> ThreadAbortException . Использование <код> HttpContext.Current.ApplicationInstance.CompleteRequest вместо этого не р...

4  Создайте VCARD, который можно скачать на Android с помощью ASP.NET  ( Generate vcard that can be downloaded on android using asp net ) 
Я пробую довольно некоторое время, чтобы сгенерировать VCARD, используя ASP.NET (C #), которые можно загрузить на устройство Android. Процесс генерации карт...

2  Обращайтесь с событиями для динамического (время выполнения) - vb.net  ( Handle events for dynamic run time controls vb net ) 
У меня есть элемент управления WebBrowser, который создается и добавляется в форму во время выполнения. Как подключить этот элемент управления подпрограммой...

-4  Будет вернуться внутрь памяти утечки для петли?  ( Will a return inside of a for loop leak memory ) 
в основном все, что мне нужно знать, является ли возвращение внутри цикла для цикла в C #. <код> for (int i = 0; i <= 20; i++ ) { if(i == 10) re...

0  Как бы я пошел на рисование в программе краски с чувствительностью давления?  ( How would i go about drawing in a paint program with pressure sensitivity ) 
Я пишу программу краски в родах, используя C # .NET / WinForms и чувствительность к давлению является обязательным. У меня все настроено и получаю информацию ...

1  WIX Набор инструментов Build не удается после обновления от .NET 4.0 до 4.6.1: не может загрузить MSBuild Wrapper?  ( Wix toolset build fails after upgrading from net 4 0 to 4 6 1 cannot load msbu ) 
Так после обновления всего проекта до 4.6.1 Я получаю эту ошибку, выброшенную нагревом, когда я его создаю: <код> Failed to load MSBuild wrapper object: Cou...

1  Xero C # «Текущий токенопозиторий не имеет токена текущего запроса»  ( Xero c sharp the current tokenrepository doesnt have a current request token ) 
удалось подключиться к Xero API и получить токен запроса. Однако после перезапуска проекта (для отладки) он в основном дает следующую ошибку при проложении то...

0  Streaminsight и долгосрочные запросы  ( Streaminsight and long running queries ) 
У меня есть приложение, построенное на вершине Streaminsight 1.2, который имеет несколько постоянных запросов, выполняющих некоторые расчеты в операторах опре...

Связанный проблема

0  C # сделать в то время как Unassigned локальной проблемы переменной 
1  Как я могу прочитать все предметы питания? 
3  Как мне расположить эллипс на сетке Silverlight? 
0  Как нарисовать в автономном режиме круг 1500 метров в диапазоне Geocoordinate в Windows Phone 8 
4  Как написать на пользовательский журнал событий? 
0  Присоединиться к запросу с LINQ 
0  Ошибка структуры объекта: ошибка загрузки указанного ресурса метаданных 
5  Можем ли мы использовать ответ .Flush () вместо ответа. Денды () 
4  Создайте VCARD, который можно скачать на Android с помощью ASP.NET 
2  Обращайтесь с событиями для динамического (время выполнения) - vb.net 
-4  Будет вернуться внутрь памяти утечки для петли? 
0  Как бы я пошел на рисование в программе краски с чувствительностью давления? 
1  WIX Набор инструментов Build не удается после обновления от .NET 4.0 до 4.6.1: не может загрузить MSBuild Wrapper? 
1  Xero C # «Текущий токенопозиторий не имеет токена текущего запроса» 
0  Streaminsight и долгосрочные запросы