728x90
반응형
Delegate Case 1
Event + Delegate 조합, 기본적인 Delegate 사용법이다.
특정 이벤트나 작업 완료 시 다른 객체의 함수를 호출할 때
그 함수의 정해진 인자값으로 함수를 호출하고 싶을때 사용한다.
다음은 남편이 회사로 부터 급여를 받으면 그 급여가 아내의 통장으로 "자동"으로 이제 되는 시나리오로
예제 심플코드를 짜보았다.
Man : 남편 (form class)
Wife : 아내 (Class)
먼저 아내 클래스이다.
public class wife
{
//아내 계좌 (입출금)
private List<wifeBankAccount> WifeDepositList = new List<wifeBankAccount>();
//급여 받기 함수
public void SalaryRecive(int _salary, string _name)
{
//델리게이트 호출로 넘어온 급여를 아내의 계좌로 넣어준다.
wifeBankAccount _Recive = new wifeBankAccount();
_Recive.name = _name;
_Recive.Amt = _salary;
WifeDepositList.Add(_Recive);
MessageBox.Show("Wife님에게 급여 이체가 완료되었습니다.");
//입금된 내역 표시
ShowMoneyList();
}
public void ShowMoneyList()
{
string msg = string.Empty;
foreach(var list in WifeDepositList)
{
msg = msg + string.Format("입금자 : {0} , 입금액 : {1}", list.name, list.Amt) + Environment.NewLine;
}
MessageBox.Show(msg);
}
}
//아내 계좌
public class wifeBankAccount
{
public string name;
public int Amt;
}
아래는 남편 클래스(폼)이다.
public partial class Man : Form
{
//델리게이트
public delegate void SalaryTossEvent(int Salary, string name);
//델리게이트 이벤트
public event SalaryTossEvent SalaryToss;
public Man()
{
InitializeComponent();
}
private void Man_Load(object sender, EventArgs e)
{
//폼이 생성되면서 아내 객체를 생성한다.
wife MyWife = new wife();
//남편이 급여를 받으면 자동으로 아내 통장으로 입금되도록 이벤트를 연결한다.
SalaryToss += MyWife.SalaryRecive;
}
private void button1_Click(object sender, EventArgs e)
{
//급여입금
int JuneSalary = 1000000;
string Name = "니남편";
MessageBox.Show(string.Format("6월 급여가 {0}원 입급되었습니다.", JuneSalary.ToString()));
//델리게이트 이벤트 호출로 자동으로 아내에게 급여이체
SalaryToss(JuneSalary, Name);
JuneSalary = 0;
MessageBox.Show("6월급여가 로그아웃했습니다.");
}
}
728x90
반응형
'C#' 카테고리의 다른 글
C# string null, 공백 체크 (0) | 2021.12.13 |
---|---|
C# Delegate - Case2 : Delegate 단독 사용 (0) | 2021.12.13 |
C#, Winform EventHandler를 사용하여 Form1에서 Form2의 함수 실행하기 (0) | 2021.12.09 |
[C#]C# 재시도횟수(10)을 초과하여 작업을 수행하지 못했습니다/파일은 다른 프로세스에서 사용중이므로 프로세스에서 엑세스할 수 없습니다. OR 오류 : 다른 프로세스에서 사용 중이므로 bin /.. (0) | 2020.12.14 |
INFRAGISTICS Windows Forms Grid - AfterRowUpdate Event (0) | 2020.11.02 |
댓글