>  기사  >  백엔드 개발  >  C#에서 익명 대리자 및 Lambda 표현식 사용에 대한 자세한 설명

C#에서 익명 대리자 및 Lambda 표현식 사용에 대한 자세한 설명

黄舟
黄舟원래의
2017-09-02 14:40:581416검색

이 글은 주로 C# 익명 대리자 및 람다 표현식 관련 정보를 자세히 소개합니다. 관심 있는 친구들이 참고할 수 있습니다.

익명 대리자(익명 메서드)를 사용하면 프로그래밍이 더욱 쉬워집니다. 위임 및 익명 위임에 대한 자세한 내용은 이전 블로그 "위임 및 익명 위임"을 참조하세요.

이전 예제에 이어 코드는 다음과 같습니다.


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();
}

위의 프로그램 작업자는 Main에서 제공한 매개변수 및 계산 방법(method)에 따라 결과를 계산하고 반환합니다. 코드는 동등성을 기반으로 다음과 같이 더욱 단순화될 수 있습니다.


 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();
  }

여기에서 js 및 jquery 개발 경험이 있는 친구는 갑자기 친근감을 느낄 수도 있습니다. 아... 익명 기능입니다. $("#id").click(function(){..........})은 jquery의 모든 곳에서 사용됩니다.

C#의 익명 대리자를 사용하면 더욱 단순화될 수 있으며, 더욱 단순화된 결과는 람다 표현식이라는 표현식이 됩니다.


static void Main(string[] args)
  {

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

Lambda 표현식 표현식:


static void Main(string[] args)
  {

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

C# =>를 사용한 람다 표현식은 두 부분으로 나누어지며, (a, b)는 매개변수 목록, {....}는 메소드 본문입니다.


 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();
  }

아래 메서드는 람다 식 변환과 비교됩니다.


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);

이 기사를 통해 여러분은 C#에서 메서드, 대리자, 익명 메서드, 람다 식을 사용한다는 사실을 깨달았을 것입니다. 명확한 경계가 없으며 경계 간에 유연하게 변환될 수 있습니다. 실제 개발에서는 위임, 이벤트 등 위임에 관한 지식 포인트가 많습니다. 시간이 허락한다면 커미션 심화에 관한 기사를 쓰고 싶습니다.

위 내용은 C#에서 익명 대리자 및 Lambda 표현식 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.