c# delegate
@@ Delegate대리자 @@는 동일한 파라미터 형식과 리턴 타입을 가진 메서드를 서로 호환해서 불러 쓸 수 있는 기능이다
@@ Action<T> @@ 는 파라미터 1개에 void 타입을 가진 함수에 사용되는 delegate 이다
c# eventHandler
@@ 이벤트 @@는 클래스 내에서 event가 발생했을때 event 가입자들(구독자들)에게 event가 일어났음을 알려주는 기능
이벤트 가입자입장에서 event가 발생했을때 어떻게 해야 할지 처리하는 도구가 @@ EventHandler @@이고,
+= 연산을 통해 이벤트(event)에 이벤트 핸들러(eventHandler)를 추가
using System;
namespace Temp
{
//@@ 이벤트 @@는 클래스 내에서 event가 발생했을때 event가입자들(구독자들)에게 event가 일어났음을 알려주는 기능
//이벤트 가입자입장에서 event가 발생했을때 어떻게 해야 할지 처리하는 도구가 @@ EventHandler @@이고,
//+= 연산을 통해 이벤트(event)에 이벤트 핸들러(eventHandler)를 추가
class Program
{
class Button
{
public event EventHandler Click;
EventArgs arg = new EventArgs();
public void OnButtonClicked()
{
if (Click != null)
//이벤트 핸들러 호출
Click.Invoke(this, arg);
}
}
//@@ Delegate대리자 @@는 동일한 파라미터 형식과 리턴 타입을 가진 메서드를 서로 호환해서 불러 쓸 수 있는 기능이다
//@@ Action<T> @@ 는 파라미터 1개에 void 타입을 가진 함수에 사용되는 delegate 이다
class MyClass
{
public delegate void Run(int i);
public void runThis(int i)
{
Console.WriteLine(i);
}
public void runThat(int i)
{
Console.WriteLine(i);
}
public void perform()
{
//1. delegate인스턴스 생성
Run run = new Run(runThis);
//2. delegate 실행
run(1024);
//Run run2 = new Run(runThat)을 줄여서
//아래와 같이 쓸 수 있다
run = runThat;
run(1024);
}
}
static void Main(string[] args)
{
Button btn = new Button();
//Click 이벤트에 대한 이벤트 핸들러로
//OnButtonEventHandler 메서드를 지정함
btn.Click += new EventHandler(OnButtonEventHandler);
btn.OnButtonClicked();
}
static void OnButtonEventHandler(object sender, EventArgs arg)
{
Console.WriteLine("clicked!");
}
}
}
'자바 입문' 카테고리의 다른 글
[자바 :: 백준 7576 토마토] (0) | 2022.09.01 |
---|---|
[자바 :: 백준 2178 미로탐색 BFS ] (0) | 2022.08.31 |
[자바 :: 삼성 기출 A 백준 16637 괄호 추가하기] (0) | 2022.08.30 |
[자바 :: 프로그래머스 로또의 최고 순위와 최저 순위] (0) | 2022.08.30 |
[자바 :: 백준 사탕개수 구하기] (0) | 2022.08.28 |