2015-12-03 3 views
0

Мне интересно, существует ли разница между использованием выражения Lambda и типом анонимного имени делегата. Один из них предпочтительнее другого? Из того, что я видел, оба кажутся взаимозаменяемыми.Есть ли существенная разница между двумя выражениями

public delegate void SomeDel(string input); 

public class myClass 
{ 

    private ObjWithDel myObj; 

    public myClass() 
    { 
    // Lambda Case 
    myObj.DoDel += (val)=>{textbox1.Text = val;} 

    // delegate keyword case 
    myObj.DoDel += delegate(string val){textbox1.Text = val;} 

    } 
} 

ответ

-1

Эти две разные: лямбда является «анонимный» метод, он не имеет постоянное название, в то время как делегат на самом деле является ссылкой на метод или лямбда. В большинстве случаев, lambdas будет быстрее, чем делегаты, но есть случаи, когда вы можете использовать только делегаты или лямбды, а не два.

+2

ОП не спрашивает о различии между лямбдой и делегатом, а скорее о различии между двумя синтаксисами для создания метода анонима и получения его делегата. Как это бывает, во время выполнения нет никакой разницы. Ваше утверждение о том, что лямбда быстрее, чем делегат, не имеет смысла. –

Смежные вопросы