C#: анонимный метод vs именованный метод

Я новичок в SO и программировании и обучении изо дня в день с битами и кусками технических жаргонов (c#).

после Googling для некоторое время, ниже то, что я исследовал о methods

  1. метод представляет собой блок операторов, который служит для повторного использования кода & он также поддерживает перегрузку с другой подписью....для бывших: drawShape(2pts), drawShape (3pts) и т.д...

  2. An Anonymous метод является одним с блоком операторов, но нет имя....(как его преждевременно спрашивать, в ситуации wt мы сталкиваемся анонимный метод...любые статьи, образцы ...)

  3. Named method: вот ссылка но в конце я не понял, что такое именованный метод...

может ли кто-нибудь объяснить, что такое "именованный" метод, и где мы используем анонимный метод?

5 ответов


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

int f(int x, int y)
{
    return x+y;
}

вы бы назвали этот метод его именем так:f(1, 2);.

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

эти методы часто используются в LINQ запросы, например:

int maxSmallerThan10 = array.Where(x => x < 10).Max();

выражение x => x < 10 называется лямбда-выражением, и его результатом является анонимная функция, которая будет выполняться методом Where.

если вы новичок, я бы предложил вам сначала прочитать о более основных вещах. Проверьте следующее ссылки:


давайте начнем с простого метода.

void MyMethod()
{
  Console.WriteLine("Inside MyMethod"); //Write to output
}

вышеуказанный метод является named-method который просто пишет Inside MyMethod в окне вывода.

Anonymous methods некоторые методы, используемые в некоторых особых ситуациях (при использовании delegates), где определение метода обычно меньше, где вы не указываете имя метода.

например, (delegate) => { Console.WriteLine("Inside Mymethod");}

просто начните писать некоторые простые программы и в свое время, когда вы используете delegates или некоторые продвинутые концепции вы узнаете сами. :)


объяснение по аналогии

обычно, когда мы рассказываем истории, мы обращаемся к людям по имени:

"Фредди"

"кто такой Фредди?"


анонимные методы или анонимные функции, которые кажутся одинаковыми, в основном являются делегатами. В качестве ссылки вы указываете:http://msdn.microsoft.com/en-us/library/bb882516.aspx описывает, анонимные методы предоставляют упрощенный способ передачи метода для выполнения другим методом. Как обратный звонок. Другой способ увидеть это-подумать о лямбда-выражениях.

a, названный контрастом, является любым общим методом.


из MSDN:

делегат может быть связан с именем метода. При создании экземпляра делегата с помощью именованного метода метод передается в качестве параметра. Это называется использованием именованного метода. Делегаты построен с помощью именованного метода, могут инкапсулировать статический метод или метод экземпляра. Названные методы являются только способом создания экземпляра делегата в более ранних версиях C#. Однако, в ситуации, когда создание нового метода является нежелательным, c# позволяет создать экземпляр делегата и сразу указать блок кода, который будет обрабатываться делегатом при его вызове. Блок может содержать либо лямбда-выражение, либо анонимный метод.

и

в версиях C# до 2.0 единственным способом объявления делегата было использование именованных методов. В C# 2.0 появились анонимные методы в C# 3.0 и более поздних лямбда-выражения заменяют анонимные методы как предпочтительный способ написания встроенного кода. Однако сведения об анонимных методах в этом разделе также применимы к лямбда-выражениям. Существует один случай, когда анонимный метод предоставляет функциональность, не найденную в лямбда-выражениях. Анонимные методы позволяют опустить список параметров. Это означает, что анонимный метод может быть преобразован в делегаты с различными сигнатурами. Это невозможно с лямбда-выражениями. Дополнительные сведения о лямбда-выражениях см. В разделе лямбда-выражения (C# программа передач.) Создание анонимных методов-это, по сути, способ передачи блока кода в качестве параметра делегата. С помощью анонимных методов можно уменьшить затраты на кодирование при создании экземпляров делегатов, так как не требуется создавать отдельный метод.

поэтому в ответ на ваш вопрос о том, когда использовать анонимные методы, MSDN говорит: в ситуации, когда создание нового метода является нежелательными накладными расходами.

по моему опыту, это скорее вопрос кода повторное использование и читаемость.

ссылки:

http://msdn.microsoft.com/en-us/library/98dc08ac.aspx

http://msdn.microsoft.com/en-us/library/0yw3tz5k.aspx

надеюсь, что это поможет