>>440417 Книжки Шилдта по C# и Java курани. Тащемто суть языков одна - управляемый виртуальной машиной код. Но с C# больше йобы поставляется. Также фарс в том, что в Microsoft мало что пишут на C#, чтоб как бы намекает. С кросплатформенностью у C# тоже не очень, хотя есть Mono. Лично я бы выбрал из двух зол Java.
>>440421 >мало что пишут на C# Пачка приложений под WinRT; значительная часть Visual Studio (в частности, интерфейс); новый компилятор самого C# — Roslyn; SQL Server Management Studio; ныне уже почивший Games for Windows Live; и так далее — это мало? Это только то, чем я лично пользовался. Причём количество программ со временем растёт. >С кросплатформенностью у C# тоже не очень В этом году выпустят официальный порт под ведро и, вроде бы, iOS, идёт разработка порта под MacOS и Linux. Добавлю к этому, что сама Java как язык — знатное говно, особенно в сравнении с C#.
Короче, теперь это официальный C# тред. Сейчас почитаю вики и поясню вам за делегаты. Алсо, реквестирую сюда QT-господ, которые расскажут про сигналы и слоты.
Модель делегирования событий в JavaАноним21/02/15 Суб 17:38:54#22№440481
>>440417 Как это работает? Есть источники событий, которые могут генерировать события разных типов, и есть блоки прослушивания, которые обрабатывают события (объект события) и затем возвращают управление. Блоки-слушатели создаются путем реализации одного или нескольких интерфейсов прослушивания событий, что позволяет принимать и обрабатывать события. EventObject – суперкласс всех событий. Элементы интерфейса (компоненты) могут генерировать различные события (объекты классов событий). Когда событие происходит, источник события вызывает соответствующий метод, определенный блоком прослушивания, и передает ему объект события в качестве параметра. Блок-слушатель просто ждет поступления события. Получив событие, блок-слушатель обрабатывает его и затем возвращает управление. Забыл сказать, что блоки прослушивания должны зарегистрироваться в источнике (addListener) или источниках событий для того, чтобы принимать уведомления об определенном типе события. Преимущество способа в том, что логика приложения, обрабатывающего событие, четко отделена от логики интерфейса пользователя, генерирующего эти события. Элемент интерфейса пользователя «делегирует» обработку события отдельной части кода. Второй плюс в том, что уведомления посылаются только блокам прослушивания, которые хотят их принимать. В старом подходе Java 1.0 событие распространялось по ограниченной иерархии компонентов, пока один из них не обработал это событие. Минусы были очевидны: компоненты принимали события, которые они не обрабатывают.
>>440515 >А теперь расскажи про делегаты и событийную модель в C#.
Делегаты в C#
Что это за йоба и для чего нужны? Делегат в C# является классом. Когда создается делегат, то в итоге получается объект, содержащий ссылку на метод. Метод можно вызывать по этой ссылке. Один и тот же делегат может быть использован для вызова разных методов во время выполнения программы, для чего достаточно изменить метод, на который ссылается делегат. Таким образом, метод, вызываемый делегатом, определяется во время выполнения, а не в процессе компиляции. В этом, собственно, и заключается главное преимущество делегата.
Форма объявления делегата: delegate возвращаемый_тип имя(список_параметров);
Делегат может служить для вызова любого метода с соответствующей сигнатурой и возвращаемым типом. Только это имеет значение.
Простой пример применения делегата: http://pastebin.com/MbnEN2z1 Поправьте, если где-то лоханулся, т.к. не проверял код – не выполнял.
Все равно нихуя не понятно! Зачем нужны ебучие делегаты?
Как правило, делегаты применяются в двух случаях: 1. Делегаты поддерживают события. Событие, по существу, представляет собой автоматическое уведомление о том, что произошло некоторое действие. События действуют по следующему принципу: объект, проявляющий интерес к событию, регистрирует обработчик этого события. Когда же событие происходит, вызываются все зарегистрированные обработчики этого события. Обработчики событий обычно представлены делегатами. 2. Делегаты позволяют вызывать методы во время выполнения программы, не зная о них ничего определенного в ходе компиляции. Это очень удобно для создания базовой конструкции, допускающей подключение отдельных программных компонентов.
>Делегаты и делегирование событий это ведь не одно и то же? Как видишь.
>>440504 >Ничем Ты совсем упоротый, блжад? Десктопное приложение не клиент-серверное. Хотя бы поэтому есть различия.
>AJAX Сейчас популярны data binding (two way and one way) фреймворки. А еще есть Dirty checking (пример: Angular) и Change listeners (реализован в Knockout и Backbone).
>>440523 >AJAX Пососи. AJAX работает с браузером. Это 2,5 функции, которые эксплуатируют возможность браузеров выполнять запросы к серверу, к уёб-серверк, без перезагрузки страницы. В фоне.
Какой к черту AJAX в обычных десктопных гуй-приложениях? Какой там тебе клиент сервер? Мы тут про то, как события в гуях реализованы говорим вообще-то.
Но раз уж ты про AJAX запел, то кроме AJAX есть RPC, XML-RPC, SOAP, JSON-RPC, Java Applets, COMET, WebSockets, ебаный FLASH. И REST есть и еще всякого, от чего можно запросто свихнуться. Технологии JAVA и C#, это не игрушки. Это не PHP.
>>440527 Это не стёб. Это не игрушки. Либо ты манкикодер с нищеебской зарплатой, которого могут выкинуть за дверь в любой момент, потому что таких, как ты тясячи. Либо ты профессионал своего дела, который получает достойную плату за качественный результат, выполненный за приемлемое время. Выбирай стул, ньюфаг.
>>440522 А вот за QT двачую. Ничего удобнее, чем QT для формошлепства не придумано. Единственный минус, это кресты в основе. Но работая с QT не замечаешь минусов оных. QT разработчики -- счастливые люди на самом деле. Можно конечно и поххоливарить. Призываю для этого GTK+ сишника.
>>440533 >то кроме AJAX есть RPC, XML-RPC, SOAP, JSON-RPC, Java Applets, COMET, WebSockets, ебаный FLASH. И REST есть и еще всякого, от чего можно запросто свихнуться. А вот и энтерпрайзная крыса к нам пожаловала. Ну рассказывай. Как там у вас в офисе? Печеньки вкусные? В настольный теннис часто играете с коллегами? Мест на стоянке всем хватает? Кек.
>>440545 Наблюдаю парадокс. Несмотря на то, что QT наиболее удобный инструмент для разработки гуйни, Gnome приложения пользуются большей популярностью. А от KDE вообще многие плюются, ибо он настолько разжирел, что дальше некуда. Как-то так.
>>440547 Поддвачну про KDE. На нищебродских машинах тормозит. Поэтому нмогие пользователи плюются на QT based окружение, но для разработчика это рай. Механизм сигналов и словтов, MVC и еще куча плюшек делают разработку простой и приятной.
>>440554 Говно собаки, проклееное XAML'ом, которое доведет тебя до суицида уже через неделю. Если и писать на этом, то только при условии, что ты омич.
>>440522 Зачем нужны? Любая магия затем и нужна, чтобы ты меньше кода писал. Суть сигналов и слотов заключается в том, что гуй-компонент может посылать сигналы, содержащие информацию о событии (например: была нажата кнопка). Другие компоненты могут принимать эти сигналы посредством специальных функций — слотов. В C# есть имеется похожий подход, только с другой терминологией и синтаксисом. События играют роль сигналов, а делегаты — роль слотов. Вот это читай еще раз >>440516 Алсо, механизм сигналов и слотов не только в QT реализован, но и много где еще. Пиздуй в вики за списком.
>>440576 Согласен с тобой. Погромисты в большинстве своем долбоебы. Самые уникальные долбоебы конечно же те, кто знает дохуя всего и умеет с этим как следует работать, что и делает каждый день не отрывая жопы от кресла. Ибо человек в здравом уме не будет проебывать всю жизнь на подобное говно. Здравй человек никогда не свяжет свою жизнь с кодингом.
>>440567 QT кончено хорошо и много где применяется. Особенно там, куда тебя никогда не возьмут. А там, куда возьмут QT уже давно не используют. Потому что теперь браузер в роли клиента. Что-то понапиздел я вам тут, но думаю, что неглупые поняли меня.
Основы программирования на С# 3.0: ядро языка (2009)
Текстовая версия:
http://intuit.ru/department/pl/tincsharp3/
Видео:
http://intuit.ru/department/pl/incsharp3/
Объектное программирование в классах на С# 3.0 (2009)
Текстовая версия:
http://intuit.ru/department/pl/toopincsharp30/
Видео:
http://intuit.ru/department/pl/oopincsharp30/
Автор: В.А. Биллиг, http://intuit.ru/lector/39.html