Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: C# : anonymous methods  (Прочитано 8052 раз)
0 Пользователей и 1 Гость смотрят эту тему.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« : 30-08-2005 04:41 » 

Может кто-нибудь может мне простым языком толком растолковать что такое САБЖ ?
Инфы море, но как-то всё написано видать не по уму моему. Я так понимаю, что анонимные методы как-то облегчают работу с делегатами, да ?
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 30-08-2005 07:58 » 

Это такая штука, которая теоретически должна повысить удобочитаемость кода и упростить работу с делегатами.  Но на самом деле при небрежном использовании элементарным образом может запутать код так, что фиг поймёшь, что сломалось.  Я считаю, что в C# напрасно их добавили.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #2 : 30-08-2005 08:09 » 

Вот и я статейку какую-то читал, так автор там такие примеры давал, что я никак не мог понять где же это упрощение ? В общем пока не пользую САБЖ, может позже как дойдёт до мня таки зачем всё это Улыбаюсь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 30-08-2005 08:38 » 

Допустим, что тебе надо отсортировать массив строк в соответствии с каким-то очень специальным правилом сравнения.  В .NET 1.x правило надо записать в виде метода некоторого класса, дать ему имя, и только после этого использовать.  Метод надо создавать, даже если он используется только в одном месте.

Код:
  private int specialStringCompare(string s1, string s2) { /* как-то сравнить строки */ }
  public void f(string[] strings)
  {
    // бла-бла
    sort(strings, new CompareDelegate(specialStringCompare));
    // бла-бла
  }

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

Используя анонимные методы, можно уменьшить число объявлений в классе:
Код:
  
  public void f(string[] strings)
  {
    // бла-бла
    sort(strings, delegate int (string s1, string s2) {  /* как-то сравнить строки */ } );
    // бла-бла
  }

Это может быть удобным для быстрой разработки, когда надо быстренько склепать код.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines