ПредишенСледващото

Със задълбочаването на изучаване на езика, C #, да се чудите защо трябва това или онова. Тъй като аз съм самоук и програма писане на случаен принцип, по мое кодове хакер счупи крак. И все пак пиша аплети. Разбира се, може би не съм прав да ги пиша, но крайният резултат - тя работи.

Проблемът е, че никой не ме попита, за да получите точна адекватен отговор. Аз не знам някоя програмиране.

настроен 26 януари '15 в 13:52

@ Генадий Писарев аз ще бъда щастлив да отговори, но отговорът на този въпрос изисква доста дълго обяснение - за съжаление ще трябва да се обясни много се дължи на факта, че знанието е много повърхностно очевидно. Напиши подробно обяснение тук, аз за съжаление не може сега, опитайте се да го направите малко по-късно, когато му дойде времето - DreamChild 26 януари '15 в 14:23

Малък пример за делегатите

Понякога може да има ситуация, която не е точно знаете името на метода, който трябва да се предаде на функцията, но тя трябва да бъде единен. В допълнение, могат да се добавят делегати.

Типичен пример за подобно.

В този случай, методите се извършват в Майн, но практиката на използване на делегатите е, че те са прехвърлени на други функции, които не трябва да кодирате твърдо използва метода.

Малък пример за интерфейсите

Друга сделка с интерфейсите от които се нуждаят, за ясно описание на това, което е в класната стая. Например, можете да направите приложение, което се свързва с базата данни. Трябва да се осъществи връзка с базата данни три вида избор: MySQL, SQL сървър и Oracle. Може да се направи за всеки свой собствен клас и ги изпълнява, но това е по-лесно, за да плъзнете интерфейс, без да знае за изпълнението на класа.

Сега кода, който използва връзката, не може да се мисли за вътрешния изпълнението на тези връзки и да ги изпълни чрез интерфейса.

В допълнение, следва да се отбележи, че е много лесно да добавите нова база данни (или абсолютно напълно пренапише възраст), наследявайки на интерфейса и без да се променя останалата част от кода. Дори и тогава се извършва полиморфизъм, че винаги ще знаете какви методи могат да имат един или друг клас, гледайки неговия интерфейс. Той също така ви позволява да записвате вашите класове на този интерфейс. Често използвана пример - той е изграден и IEnumerable IQueryable, който е наследен от вашите собствени класове може да приложи правилно поведение "като масата" за индекса MyClass препратки [1] и "Как да се прехвърли" за foreach (VAR в MyClass).

Ами, тъй като след това повдигна темата на книгата, ето един добър списък:

В допълнение, делегати са често използвани за подписване (и otpisyvaniya чрез операция - =) събития.

Тя е само тогава, че той си спомни наведнъж, все още има много ситуации, в които той е удобен за класове на приложения и интерфейси.

Делегатът и истината не е семантично много различен от препратката към самия клас, както и посочете кои метод трябва да се обади. Java не делегати, и там е необходимо да се направи това.

Въпреки това, както показва практиката, този подход води до доста обемиста код.

Аналогово в Java / Swing

В интерес на истината, трябва да се отбележи, че има същите делегати / ламбда функции в новата версия на Java, така че стана като синтаксис.

@DreamChild благодаря. Не трябва да се научите как да създадете делегат. Въпреки, че по този повод имам въпроси. Въпросът е как да се направи препратка към класа и се обадете на метод, или препратка към делегата. Какво се отрази? Може би много препратки към класовете това се отразява на изпълнението на програмата, или нещо друго. За изобилието от код, за да се обадя на метода в зависимост от класа, тя се превръща в един ред по-малко да пиша. Отново повтарям, аз не пиша огромна програма, за да се оцени предимството. - Генадий Писарев 27 Януари '15 в 05:45

@ Генадий Писарев: Не съм се опитвал да ви обясня как да създадем делегат, аз се опитах да покажа синтактично предимство. И мисля, че има разлика не в същия ред, в изобилието на шаблон: не делегат ще получи много код, който не казва това, което мислите, а просто трябва да отрежете. За семантичните предимства, все повече и по-трудно. За моя вкус, аз обикновено докладва източник само действие събитие. той трябва да започне, така че делегатът е семантично по-близо до това, което мисля. Ако мислите, че с изключение на самото действие е също така важно, както и обекта, който го изпълнява. - VladD 27 януари '15 в 10:02

@ Gennadiy Pisarev. че е разумно да премине един обект. Това означава, че формата на продиктувани семантиката, а не някои догматични правила са в сила веднъж завинаги. Така че, във всеки случай тя трябва да изберете като архитект на програмата. Аз съм в по-голямата част от самия обект не е важно, но то е само важно действие. YMMV. - VladD 27 януари '15 в 10:05

Свързани статии

Подкрепете проекта - споделете линка, благодаря!