C#에서 델리게이트는 delegate라는 키워드를 통해 선언되며 리턴 타입과 파라미터도 가질 수 있다. 또한 new 연산자를 통해 인스턴스를 생성하여 사용된다. 델리게이트가 갖는 리턴 타입과 파라미터는 그가 처리하는 메서드에 종속적이다.
대리자는 메서드를 다른 메서드에 인수로 전달하는데 사용된다.
예
// Declare delegate -- defines required signature: delegate double MathAction(double num); class DelegateTest { // Regular method that matches signature: static double Double(double input) { return input * 2; } static void Main() { // Instantiate delegate with named method: MathAction ma = Double; // Invoke delegate ma: double multByTwo = ma(4.5); Console.WriteLine(multByTwo); // Instantiate delegate with anonymous method: MathAction ma2 = delegate(double input) { return input * input; }; double square = ma2(5); Console.WriteLine(square); // Instantiate delegate with lambda expression MathAction ma3 = s => s * s * s; double cube = ma3(4.375); Console.WriteLine(cube); } }예
List<int> list = new List<int>(); list.AddRange(new int[] { 100, 200, 300, 400, 500, 600 }); ICollection<int> result = list.FindAll(delegate(int item) { return item > 350; }); foreach (int a in result) { Console.WriteLine(a); }
댓글 없음:
댓글 쓰기