C#
C# Delegate 심플예제[Case1] - Event + Delegate 사용 ( Delegate를 통해서 다른 클래스 함수에 지정된 인자값으로 맞추어 함수 호출)
따봉이
2021. 12. 12. 00:53
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
반응형