티스토리 뷰
======================================================
안녕하세요 Doridori 입니다.
이번 강의는 delegate에 대한 강의 입니다.
프로그램을 하면서 어렵다고 느껴질만 한 내용인데 사용이 필요한 이유를 알고 쓰면 필요한 부분에 맞게 사용 할 수 있을것 같습니다.
어렵지 않게 진행 했다고 생각 하니 강의를 보시면서 천천히 따라오시면 좋을것 같습니다. ^^
======================================================
Delegate 1 (delegate의 사용)
Source UI) Study_24_Delegate 1(UI).zip
Soruce 전체) Study_24_Delegate 1.zip
교재) 24강 Delegate 1 (delegate의 사용).pdf
이번강의는 delegate에 대한 강의 입니다.
실제로 사용할 때에는 Event와 함께 사용되는 경우가 많지만 기본 delegate의 내용을 알고 있으면 event와 함께 사용할 때 내용을 알고 사용할 수 있을것 같아서 이번 강의를 먼저 준비 하게되었습니다.
delegate의 경우 결론적으로는 "정해놓은 함수를 한번 더 거쳐서 호출해 준다" 라고 생각하시면 좋을 것 같습니다.
이번 예제의 경우 만들다 보니 예전에 만들었던 투표하는 예제와 거의 비슷하게 나와서 결국에는 새로 만들었습니다. ㅜㅠ;;
delegate의 사용법을 하나씩 담으려고 하다보니 피자를 주문하는 예제를 만들게 되었습니다. (만족~! ^^)
다음 강의까지 이어서 진행 할 예정이니 한번 만들어보시면 다음강의를 보시는데 조금더 편할것 같습니다.
(다음강의에 폼을 하나 더만들어서 호출해서 사용할꺼라서 꼭 안해보셔도 되지만 해보시면 이해가 더 잘됩니다.
(UI 만드는것도 힘들어요 ^^)
강의)
강의는 생각보다 길게 나왔는데 그래도 한번 보시면 도움이 된다고 말씀드리겠습니다.
그냥 예제만 몇번보고 코드만 따라 적어보시는것 보다 한번 잘 보시고 내것으로 만들면 좋을것 같습니다.
Source)
소스 중에 델리게이트의 일반화 부분이라던지 object 선언 부분같은 경우는 예제로 사용한 부분이기 때문에 참고만 하시면 될것 같습니다.
(강의에서는 설명하고 진행 하였습니다.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace _24_DelegatePizzaOrder { public partial class Form1 : Form { public delegate int delFuncDow_Edge(int i); public delegate int delFuncTopping(string strOrder, int Ea); public delegate T delFunc<T>(T i); // 함수 명 뒤에 <일반화 변수명 - 형식 매개 변수> 을 사용 할 경우 일반화 함수를 지정 할수 있음 (인자 값 Type에 신경 쓰지 않는 형태) public delegate A delTest<A>(A i); // 문자 종류는 상관 없음 일반화 함수를 Delegate에도 적용할 수 있다는 점 (확장개념 일반화 delegate를 delegate의 특징이라고 보기는 어렵지 않을지) public delegate object delFuncO(object i); // var, object int _iTotalPrice = 0; public Form1() { InitializeComponent(); } /// <summary> /// 주문하기 Button을 Click 했을 때 발생 하는 Event /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnOrder_Click(object sender, EventArgs e) { delFuncDow_Edge delDow = new delFuncDow_Edge(fDow); delFuncDow_Edge delEdge = new delFuncDow_Edge(fEdge); delFuncTopping delTopping = null; int iDowOrder = 0; int iEdgeOrder = 0; // 선택 도우 확인 if (rdoDow1.Checked) { iDowOrder = 1; } else if (rdoDow2.Checked) { iDowOrder = 2; } //delDow(iDowOrder); // 선택 엣지 확인 if (rdoEdge1.Checked) { iEdgeOrder = 1; } else if (rdoEdge2.Checked) { iEdgeOrder = 2; } //delEdge(iEdgeOrder); fCallBackDelegate(iDowOrder, delDow); fCallBackDelegate(iEdgeOrder, delEdge); // 토핑 선택 확인 if (cboxTopping1.Checked) { //delTopping = new delFuncTopping(fTopping1); delTopping += fTopping1; } if (cboxTopping2.Checked) delTopping += fTopping2; if (cboxTopping3.Checked) delTopping += fTopping3; delTopping("토핑", (int)numEa.Value); flboxOrderRed("----------------------------------"); flboxOrderRed(string.Format("전체 주문 가격은 {0}원 입니다.", _iTotalPrice)); } #region Function /// <summary> /// O : 선택안함, 1 : 오리지널, 2 : 씬 /// </summary> /// <param name="iOrder"></param> /// <returns></returns> private int fDow(int iOrder) { string strOrder = string.Empty; int iPrice = 0; if (iOrder == 1) { iPrice = 10000; strOrder = string.Format("도우는 오리지널을 선택 하셨습니다. ({0}원)", iPrice.ToString()); } else if (iOrder == 2) { iPrice = 11000; strOrder = string.Format("도우는 씬을 선택 하셨습니다. ({0}원)", iPrice.ToString()); } else { strOrder = "도우를 선택하지 않았습니다."; } flboxOrderRed(strOrder); return _iTotalPrice = _iTotalPrice + iPrice; } /// <summary> /// O : 선택안함, 1 : 리치골드, 2 : 치즈크러스터 /// </summary> /// <param name="iOrder"></param> /// <returns></returns> private int fEdge(int iOrder) { string strOrder = string.Empty; int iPrice = 0; if (iOrder == 1) { iPrice = 1000; strOrder = string.Format("엣지는 리치골드를 선택 하셨습니다. ({0}원)", iPrice.ToString()); } else if (iOrder == 2) { iPrice = 2000; strOrder = string.Format("엣지는 치즈크러스터를 선택 하셨습니다. ({0}원)", iPrice.ToString()); } else { strOrder = "엣지는 선택하지 않았습니다."; } flboxOrderRed(strOrder); return _iTotalPrice = _iTotalPrice + iPrice; } public int fCallBackDelegate(int i, delFuncDow_Edge dFunction) { return dFunction(i); } private int fTopping1(string Order, int iEa) { string strOrder = string.Empty; int iPrice = iEa * 500; strOrder = string.Format("소세지 {0} {1} 개를 선택 하였습니다. : ({2}원 (1ea 500원)", Order, iEa, iPrice); flboxOrderRed(strOrder); return _iTotalPrice = _iTotalPrice + iPrice; } private int fTopping2(string Order, int iEa) { string strOrder = string.Empty; int iPrice = iEa * 200; strOrder = string.Format("감자 {0} {1} 개를 선택 하였습니다. : ({2}원 (1ea 200원)", Order, iEa, iPrice); flboxOrderRed(strOrder); return _iTotalPrice = _iTotalPrice + iPrice; } private int fTopping3(string Order, int iEa) { string strOrder = string.Empty; int iPrice = iEa * 300; strOrder = string.Format("치즈 {0} {1} 개를 선택 하였습니다. : ({2}원 (1ea 300원)", Order, iEa, iPrice); flboxOrderRed(strOrder); return _iTotalPrice = _iTotalPrice + iPrice; } private void flboxOrderRed(string strOrder) { lboxOrder.Items.Add(strOrder); } #endregion } } | cs |
'C# > C# 강좌 Winform' 카테고리의 다른 글
Doridori C# 강의) 26.Thread (19) | 2018.12.25 |
---|---|
Doridori C# 강의) 25.Delegate 2 (delegate와 event) (25) | 2018.12.09 |
Doridori C# 강의) 23.자료구조 4 (DataRow, DataTable, DataSet) (38) | 2018.11.15 |
Doridori C# 강의) 22.자료구조 3 (HashTable, Dictionary) (7) | 2018.11.05 |
Doridori C# 강의) 21.자료구조 2 (ArrayList, List) (16) | 2018.10.25 |
- Total
- Today
- Yesterday
- 주말
- 칵테일
- 소주
- 광저우
- Visual Studio
- 전통주
- C# 기초 강의
- 모바일
- 보드카
- 맥주
- 막걸리
- 가볼만한곳
- 도리도리 C#
- 위스키
- 프로그램 강의
- C# 강의
- WinForm
- 하이볼
- 도리도리
- 가볼만한 곳
- 맛집
- 술
- 아이랑
- C#
- C# 강좌
- 증류주
- 나들이
- 서울
- 와인
- 게임
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |