Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# интерфейсы / 25 сообщений из 70, страница 1 из 3
24.11.2012, 18:47
    #38051747
bosscs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
В одном источнике пишут, что интерфейс не может содержать свойства, в другом - может. Что верно?
И что еще может содержать интерфейс?

А так же подскажите пожалуйста, верна ли следующая строка:?
авторИнтерфейс - это тот же абстрактный класс, который не может иметь свойства и тело функции.

Если нет, напишите, что же все-таки может содержать интерфейс и чем он отличается от абстрактного класса.
...
Рейтинг: 0 / 0
24.11.2012, 19:09
    #38051762
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
bosscs,
http://msdn.microsoft.com/ru-ru/library/87d83y5b.aspx
от абстрактного класса в принципе, ни чем, он в байт коде и лежит как абстрактный класс.
...
Рейтинг: 0 / 0
24.11.2012, 19:25
    #38051766
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
bosscsчто же все-таки может содержать интерфейс и чем он отличается от абстрактного класса.
В интерфейсе можно объявить (т.е. указать сигнатуры) свойств, методов, событий и индексаторов.
Абстрактный класс может содержать любые члены класса вместе с их реализацией. Разница не ограничивается этим т.к. в C# можно унаследоваться только от одного класса, но реализовать неограниченное кол-во интерфейсов.
...
Рейтинг: 0 / 0
24.11.2012, 19:37
    #38051772
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
bazile,
на хабре месяц назад видел как парень исполнил множественное наследование из байт кода, сама среда получается
это допускает, а нас выкидывает на уровне компиляции.
...
Рейтинг: 0 / 0
24.11.2012, 20:02
    #38051791
beg-in-er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
Где-то в степиbazile,
на хабре месяц назад видел как парень исполнил множественное наследование из байт кода, сама среда получается
это допускает, а нас выкидывает на уровне компиляции.
ну вабщето , если очень надо , то "множественное" наследование можно сделать и в рамках штатных методов.
хотя , да , напрямую, в лоб это сделать низя
...
Рейтинг: 0 / 0
24.11.2012, 21:39
    #38051868
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
beg-in-erну вабщето , если очень надо , то "множественное" наследование можно сделать и в рамках штатных методов.
хотя , да , напрямую, в лоб это сделать низя

Можно это продемонстрировать? Подробностей хочется.
...
Рейтинг: 0 / 0
24.11.2012, 22:08
    #38051887
beg-in-er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
LexxxxxМожно это продемонстрировать? Подробностей хочется.
ну смотря что вам нужно. только методы унаследовать это одно , а с со всеми погремушками это другое.

приведите пример того , что вы хотите множественно унаследовать. ну типа класс_предок1,2,3 и типа класс наследник.
дабы была полная ясность в данном вапрёсе.
...
Рейтинг: 0 / 0
24.11.2012, 22:16
    #38051894
beg-in-er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
Lexxxxx,

я вообще не понимаю мелкомяхких. чего они убрали возможность множественного наследования.
я понимаю желание свести всё под одну крышу обджекта, но тем не менее.
Попытка возместить потерю Ынтерфейсами - слабая попытка.
В чём жы глобальный цымес отказа?
...
Рейтинг: 0 / 0
24.11.2012, 22:55
    #38051920
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
beg-in-erну смотря что вам нужно. только методы унаследовать это одно , а с со всеми погремушками это другое.
приведите пример того , что вы хотите множественно унаследовать. ну типа класс_предок1,2,3 и типа класс наследник.
дабы была полная ясность в данном вапрёсе.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
class Predok_1
    {
        public virtual void MyMethod(int i)
            {
            //...
            }

        public int MyMethod(int i)
            {
            //...
            }
    }

class Predok_2 : Predok_1
    {
        public override void MyMethod(int i)
            {
            //...
            }

        public new int MyMethod(int i)
            {
            //...
            }
    }

class Predok_3 : Predok_1
    {
        public override void MyMethod(int i)
            {
            //...
            }

        public new int MyMethod(int i)
            {
            //...
            }
    }

class Naslednik : Predok_1, Predok_2, Predok_3
    {
        //???
    }



Ну вот как-то так. А что такое со всеми погремушками и чем это отличается от наследования только методов?
...
Рейтинг: 0 / 0
24.11.2012, 23:11
    #38051929
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
Небольшая ошибочка в код закралась. Пусть второй MyMethod в классах выглядит как
Код: c#
1.
public int MyMethod(int i1, int i2)
...
Рейтинг: 0 / 0
24.11.2012, 23:18
    #38051931
beg-in-er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
LexxxxxНу вот как-то так.
Ну , и где наследник? пустой класс Naslednik - мимо кассы. как вы себе представляете вызов MyMethod в классе Naslednik ??? из какого класса брать? из Predok_1,2 или 3 ?. если брать по порядку, то классы Predok_2 и Predok_3 идут лесом.
я ж просил описать наследника, что вы там хотите вызывать.
Предложенный вариант не отражает ни чего интересного. в нём нет даже смысловой нагрузки , что бы можно было оценить что-то.
к тому же , Predok_1 вызывает ошибку компиляции.
...
Рейтинг: 0 / 0
24.11.2012, 23:19
    #38051935
beg-in-er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
LexxxxxНебольшая ошибочка в код закралась.
небольшая ))))
...
Рейтинг: 0 / 0
24.11.2012, 23:27
    #38051937
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
beg-in-erНу , и где наследник? пустой класс Naslednik - мимо кассы. как вы себе представляете вызов MyMethod в классе Naslednik ??? из какого класса брать? из Predok_1,2 или 3 ?. если брать по порядку, то классы Predok_2 и Predok_3 идут лесом.
я ж просил описать наследника, что вы там хотите вызывать.
Предложенный вариант не отражает ни чего интересного. в нём нет даже смысловой нагрузки , что бы можно было оценить что-то.

А что откуда брать я хотел у Вас узнать! Ведь это Вы утверждали что множественное наследование это очень нужно и интерфейсы ему не замена. Предложенный вариант и не должен был нести никакой смысловой нагрузки, а вот оценить по нему можно многое! :)

beg-in-erк тому же , Predok_1 вызывает ошибку компиляции.
Да что Вы говорите?! :) Прям ужас какой-то! Я вам больше скажу, там все классы не компилируются! Даже с исправленной сигнатурой второго MyMethod! Но страшного ничего для поставленной задачи в этом нет! :)

Ну так что, как сделать множественное наследование?!
Ну или как Вы его делаете? Поделитесь сокровенным знанием?! :)
...
Рейтинг: 0 / 0
24.11.2012, 23:44
    #38051948
beg-in-er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
LexxxxxА что откуда брать я хотел у Вас узнать! пардонте, как мне надо , я так и делаю. Я спросил , что вы хотите от наследника.
Ведь это Вы утверждали что множественное наследование это очень нужно и интерфейсы ему не замена.где я такое говорил. я наоборот не сторонник массового , повсеместного применения ООП, и как одно из его свойств мн. наследование (другое дело , что выбор то не велик) .
а то что интерфейсы не замена. ну так да . как поле перелетит. а реализация методов скозь интерфейсы проходит?

Предложенный вариант и не должен был нести никакой смысловой нагрузкиа почему бы не прицепить?типа класику :машынка, колесо, руль.
ну дайте толковый пример с описанием.

Ну или как Вы его делаете? Поделитесь сокровенным знанием?! :)всё строго в штатных методах. ничего не обычного. только что чуть-чуть "сложнее".
...
Рейтинг: 0 / 0
24.11.2012, 23:53
    #38051953
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
beg-in-erLexxxxx,

я вообще не понимаю мелкомяхких. чего они убрали возможность множественного наследования.
я понимаю желание свести всё под одну крышу обджекта, но тем не менее.
Попытка возместить потерю Ынтерфейсами - слабая попытка.
В чём жы глобальный цымес отказа?
А по моему очень даже верно,
Мое имхо, вот в сях процент долюоебов очень низкий, в силу специфики - выделение памяти, ссылки, указатели, STL
там никому в голову не придет написать - class MyAss:Button,List<MyAss>,Thread, а вот если бы разрешили в диезе
тут уровень входа детского сада, и долбоебов процентов семьдесят, что бы было тогда?
Да и сама среда укомплектована на все случаи жизни около 40 000 типов, зачем оно нужно.
Если собираете свой агрегат, отнаследуйтесь от похожего и наворачивайте тюнинг интерфейсами, вполне великолепно смотрится..
зы многие кто пишет не один год даже не знают что такое интерфейс...
...
Рейтинг: 0 / 0
24.11.2012, 23:56
    #38051956
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
beg-in-er... а то что интерфейсы не замена. ну так да . как поле перелетит. а реализация методов скозь интерфейсы проходит?..
Простите ничего не понял. Напомнило " На хромой блохе, с того берега моря, которое зайцу не перелететь, орлу не перебежать, хоть море не море, а так лужа посреди города, где тень от блохи на зайца упала и насмерть убила, а из шкуры зайца тулуп вышел и пошел куда глаза глядят. Тут заяц каааак прыгнет…" :)

beg-in-er... а почему бы не прицепить?типа класику :машынка, колесо, руль.
ну дайте толковый пример с описанием...
Ну представьте себе что в каждом из предков кроме указанных мной есть нужные всему человечеству методы СделатьМирВоВсемМире(), ЧтобыНеБылоВойны() и ЧтобыДетиНеПлакали(). Какая собственно разница что в них есть еще, кроме того что я там понаписал?

beg-in-erвсё строго в штатных методах. ничего не обычного. только что чуть-чуть "сложнее".
Ну хоть маленький примерчик можно?!
А что такого дает множественное наследование, что не могут дать интерфейсы?
...
Рейтинг: 0 / 0
25.11.2012, 00:16
    #38051963
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
beg-in-erя вообще не понимаю мелкомяхких. чего они убрали возможность множественного наследования.
Чтобы кодирующие обезьянки гавнокод не писали.

beg-in-erПопытка возместить потерю Ынтерфейсами - слабая попытка.
Не путай теплое с мягким. Речь о реализации.

P.S. Малти-наследование нах не уперлось.
...
Рейтинг: 0 / 0
25.11.2012, 00:26
    #38051972
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
Вот мне надо создать мою кнопку , отнаследуюсь ка я от Button
Кнопочки должны добавляться массивом на форму отнаследуюсь ка я от List<MyAss>
кнопочки должны работать в другом потоке,( так модно) Отнаследуюсь ка я от Thread
Че то не фига не получается, пойду ка я на форум, там напишут я скопипасчу.
Что за гове...ый форум, никто не хочет помочь, все дают тынцы на мсдн и литературу - однозначно зажравшиеся дебилы..
...
Рейтинг: 0 / 0
25.11.2012, 00:34
    #38051977
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
Это все фигня, тут на соседней ветке умудряются вебформс от мувице наследовать )))))
...
Рейтинг: 0 / 0
27.05.2013, 03:05
    #38274129
megazoid007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
Подскажите пожалуйста, а то что то запутался, недавно начал изучать C#, сейчас читаю книгу Девида Сеппа "Программирование ADO.NET", он пищет: "Можно также воспользоваться интерфейсом IAsyncResult, что бы подождать завершение вызова, выполнив метод IAsyncResult.AsyncWaitHandle.WaitOne." и приводит пример

Код: c#
1.
2.
3.
4.
IAsyncResult iar = cmd.BeginExecuteReader();
while (!iar.IsCompleted){
	iar.AsyncWaitHandle.WaiteOne(3000, true);
}   



до селе я думал что интерфейс существует для того что бы реализовать реальные классы, ну и потом пользоваться этим классами зная что в нем гарантированно реализовано, а у интерфейсов соответственно нельзя вызывать ни методы ни свойства ни пр., но оказывается судя по всему можно вызывать методы у самих интерфейсов, а быть может здесь имеет место неявное приведение типов, в общем объясните пожалуйста что здесь происходить в конце концов у интерфейсов можно вызывать методы или нет?
...
Рейтинг: 0 / 0
27.05.2013, 03:35
    #38274131
skole
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
Интерфейсы могут заменять делегаты в некоторых случаях, рано тебе еще об этом думать, читай книжку дальше.
...
Рейтинг: 0 / 0
27.05.2013, 11:56
    #38274535
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
megazoid007, ты путаешь интерфейс с его реализацией. В интерфейсе мы определяем контракт. Экземпляры интерфейса создавать нельзя, но можно создать экземпляр класса реализующий интерефейс и использовать имя интерфейса везде где можно использовать имя класса (имя типа). Например:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
interface ISomething {
    void DoSomething();
}

class Something : ISomething {
    void DoSomething() {
    }
}

void Main()
{
    ISomething smth = new Something();
    smth.DoSomething();
}
...
Рейтинг: 0 / 0
27.05.2013, 12:02
    #38274547
cooldeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
Подведем итоги:

1. Самое основное отличие интерфейса от абстрактного класса (не вдаваясь в полемику о том, как оно генерируется в IL) - это отсутствие реализации у первого и возможность множественного наследования.
2. Множественного наследования в классах - зло, которое никому не нужно.
...
Рейтинг: 0 / 0
27.05.2013, 12:22
    #38274590
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
cooldeveloperМножественного наследования в классах - зло, которое никому не нужно.
Если бы это было злом, то никто бы его не реализовывал. Скорее множественное наследование создает больше проблем чем решает, что сильно повышает требования к мастерству программиста.
...
Рейтинг: 0 / 0
27.05.2013, 12:25
    #38274597
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# интерфейсы
cooldeveloper,

к п1 - у интерфейса не может быть полей
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# интерфейсы / 25 сообщений из 70, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]