Unity3d C# toolba 사용해보기

C# Lambda Action델리게이트를 알아보자!

안녕하세요? 메르세데스입니다. 이번시간은 지난시간에 이어 C#의 람다식을 이어가도록 하겠습니다. Func 델리게이트까지 알아봤는데요

간단히 정리하자면.. 무명메소드를 만들기 위해서 번거롭게 delegate선언을 해야하는 부분까지 생략할 수 있다는 것을 알아봤습니다.

또한.. Lambda식으로 표현을 하면 그동안 배워왔었던 모든 델리게이트를 적용할 수 있다라는것도 알아봤죠? 기억나시죠??

거기다 보너스로 소스가 더욱 더 간결해진다라는것도요..    

선언부분을 생략할 수 있는 이유는 .NET프레임워크에서 Func, Action이라는 delegate를 미리 선언해 놨기때문입니다. 다만 여기에 형식만 맞춰서 사용만 하면되는거죠.. 밥상은 세팅되어있으니 떠먹기만 하면되는거죠? 

그것도.. 여러가지 케이스가 있을 수 있으니.. 친절하게도 매개변수가 없는것부터 16개까지 넣을수 있도록 다양하게 준비가되어있으며.. 일반화가 가능하여서 형식에 구애받지 않고 다양한 형태로 적용이 가능하다는것도...말이죠..

Action 델리게이트는  반환이 없는 형태입니다 Func와는 반대죠?

알아보겠습니다.

Action act1 = ( ) => Consol.WrileLine("Test Action");    <-- 여기서 유의할 점은.. 바로 살행이 되지 않고.. 아래문장을 해야 실행이됨.
Act1();

매개변수가 1개인 것을 예로 들어보겠습니다.

int rsl = 0;
Action<int> act1 = (x) => rsl = x * 2;   <--반환형식이 없기때문에 rsl(변수)를 선언해서 값을 받는 식으로 처리를 했죠..
act1();                                             <-- 위에 구문으로는 값이 할당되는게 아닙니다. act1();이렇게 해야 실행이됩니다.
Consol.WriteLine(rsl);


정말 간결합니다.  값이 리턴되는게 아니기때문에 값을 받는 부분처리때문에  소스가 좀 길어지긴 했는데요..  이런형태의 무명메소드도 분명 쓸모가 있을것같네요...

예제를 한번 돌려보겠습니다.



꼭.. action1 action2 ..등의 이름이 아니어도 됩니다 형식만 맞춰주시면됩니다.

개발자에게..정말 편리하고 강력한 기술이 아닐 수 없습니다. ^^

이상으로 C#의 람다식을 이용한 Action델리게이트를 사용하는 방법에 대해 알아봤습니다. 감사합니다.





댓글