Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erläuterung zur Verwendung anonymer Delegaten und Lambda-Ausdrücke in C#

Ausführliche Erläuterung zur Verwendung anonymer Delegaten und Lambda-Ausdrücke in C#

黄舟
黄舟Original
2017-09-02 14:40:581416Durchsuche

In diesem Artikel werden hauptsächlich die relevanten Informationen zur anonymen C#-Delegierung und zum Lambda-Ausdruck vorgestellt. Sie haben einen bestimmten Referenzwert.

Durch die Verwendung der anonymen Delegation (anonyme Methode) wird die Programmierung vereinfacht Einzelheiten zur Delegation und anonymen Delegation finden Sie in meinem vorherigen Blog „Delegation und anonyme Delegation“.

In Fortsetzung des vorherigen Beispiels lautet der Code wie folgt:


static void Main(string[] args)
{

   Worker.TwoNumberHandleMethodDelegate method = delegate(int a, int b)
  {
   return a + b;
  };
   Worker worker = new Worker();
   int result = worker.HandleTwoNumber(10, 10,method);

   Console.WriteLine(String.Format("Result:{0}", result));

   Console.ReadLine();
}

Der Arbeiter des obigen Programms berechnet gemäß den Parametern und der Berechnungsmethode (Methode) gegeben durch Main Das Ergebnis wird zurückgegeben. Der Code kann basierend auf der Äquivalenz wie folgt weiter vereinfacht werden:


 static void Main(string[] args)
  {
   Worker worker = new Worker();
   int result = worker.HandleTwoNumber(10, 10, delegate (int a, int b)
   {
    return a + b;
   });

   Console.WriteLine(String.Format("Result:{0}", result));

   Console.ReadLine();
  }

Freunde, die Erfahrung in der js- und jquery-Entwicklung haben, kommen sich vielleicht bekannt vor, wenn sie das sehen. anonyme Funktion. $("#id").click(function(){..........}) wird überall in jquery verwendet.

Anonyme Delegaten in C# können bei Verwendung weiter vereinfacht werden, und das Ergebnis der weiteren Vereinfachung wird zu einem Ausdruck, der als Lambda-Ausdruck bezeichnet wird.


static void Main(string[] args)
  {

   Worker.TwoNumberHandleMethodDelegate method = delegate(int a, int b)
  {
   return a + b;
  };
}

Lambda-Ausdruck:


static void Main(string[] args)
  {

   Worker.TwoNumberHandleMethodDelegate method = (a, b)=>
  {
   return a + b;
  };
}

C# Lambda-Ausdruck verwendet => vorderer und hinterer Teil, (a, b) ist die Parameterliste und {....} ist der Methodenkörper.


 static void Main(string[] args)
  {
   Worker worker = new Worker();
   int result = worker.HandleTwoNumber(10, 10, (a, b) =>
   {
    return a + b;
   });

   Console.WriteLine(String.Format("Result:{0}", result));

   Console.ReadLine();
  }

Die unten angegebene Methode wird mit der Lambda-Ausdruckskonvertierung verglichen


private void A1()
    {
      Console.WriteLine("....");
    }
//Lambda
()=>{Console.WriteLine("....");};
//如果方法体代码只有一句,如上还可省去方法体大括号
()=>Console.WriteLine("....");


private string A2(int a, int b)
    {
      return String.Format("{0}+{1}={2}", a, b, a + b);
    }
    //如上示例可简化为
    (a,b)=>{return String.Format("{0}+{1}={2}", a, b, a + b);}
    //因为方法体只有一句,可进一步简化
    (a,b)=> String.Format("{0}+{1}={2}", a, b, a + b);
    //此时注意return应该去掉,C#编译器自动识别=>做返回值


private string A3(int a)
    {
      return String.Format("{0}", a);
    }
    //上面示例可简化为
    (a)=>String.Format("{0}", a);
    //如果参数列表只有一个参数,参数列表的()可以去掉,上面进一步简化为
    a=>String.Format("{0}", a);

Durch diesen Artikel ist Ihnen vielleicht aufgefallen, dass es in C# keine klare Unterscheidung zwischen Methoden, Delegaten, anonymen Methoden und Lambda-Ausdrücken geben kann flexibel zwischen wechseln. In der tatsächlichen Entwicklung gibt es viele Wissenspunkte zum Thema Delegation, z. B. Delegation und Ereignisse. Wenn es die Zeit erlaubt, hoffe ich, einen Artikel über die Vertiefung der Kommission schreiben zu können.

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung zur Verwendung anonymer Delegaten und Lambda-Ausdrücke in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn