C#/์ด๊ฒ์ด C#์ด๋ค
๋๋ฆฌ์์ ์ด๋ฒคํธ(2)
https://youtu.be/HNX_FZBU_wA ์ด๋ฒคํธ (Event) - c#์์ ๊ฐ์ฒด์ ์ฌ๊ฑด์ ํํํ๋ ํ์ - ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ(Evnet Handler) : ์ด๋ฒคํธ ๋ฐ์์ ์คํ๋๋ ๋ฉ์๋ - ๋์ ์๋ฆฌ๋ ๋๋ฆฌ์์ ์ ์ฌ * ์ด๋ฒคํธ๋ ์ธ๋ถ์์ ์ง์ 'ํธ์ถ'ํ ์ ์์. ๊ฐ์ฒด์ ์๋์ฑ ํํ์ ์ํด - ๋๋ฆฌ์๋ฅผ event ํ์ ์๋ก ์์ํ์ฌ ์ ์ธ
๋๋ฆฌ์์ ์ต๋ช ๋ฉ์๋(1)
์ฐธ๊ณ ์์ https://youtu.be/HNX_FZBU_wA ๋๋ฆฌ์(Delegator) - ์ฝ๋(๋ฉ์๋)๋ฅผ ๋์ ์คํํ๋ ๊ฐ์ฒด - ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฏ ์ฌ์ฉ(์ฆ, ์ธ์๋ฅผ ์ ๋ ฅํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ ๋ฐ์) - ๋จ, ๋๋ฆฌ์๊ฐ ์คํํ ์ฝ๋๋ ์ปดํ์ผ ์์ ์ด ์๋ ์คํ ์์ ์ ๊ฒฐ์ ๋๋ฆฌ์์ ์ ์ธ๊ณผ ์ฌ์ฉ (1) delegate ํค์๋ ์ฌ์ฉ, ๋๋ฆฌ์ ์ ์ธ delegate int MyDelegate(int a, int b); //์ธํฐํ์ด์ค ์ ์ธํ ๋ ์ฒ๋ผ ๊ตฌํ์ ์๋ค! ํน์ ํ์ ์ - delegate - ๋ฐํํ - ๋ธ๋ฆฌ๊ฒ์ดํธ๋ช (๋งค๊ฐ๋ณ์ ๋ชฉ๋ก) private delegate int MyDelegate(int a, int b); (2) ์ฌ์ฉ ์ namespace Delegate // Note: actual namespace de..
์์ธ์ฒ๋ฆฌํ๊ธฐ(4) try~catch์ finally
try ๋ธ๋ก์์ ์ฝ๋๋ฅผ ์คํํ๋ค๊ฐ ์์ธ๊ฐ ๋์ ธ์ง๋ฉด ํ๋ก๊ทธ๋จ์ ์คํ์ด catch ์ ๋ก ๋ฐ๋ก ๋ฐ์ด๋์ด์จ๋ค. ๋ง์ฝ ์์ธ ๋๋ฌธ์ try ๋ธ๋ก์ ์์ ํด์ ๊ฐ์ ์ค์ํ ์ฝ๋๋ฅผ ๋ฏธ์ฒ ์คํํ์ง ๋ชปํ๋ค๋ฉด? ์ด๋ ๊ณง ๋ฒ๊ทธ๋ฅผ ๋ง๋๋ ์์ธ์ด ๋ ๊ฒ์ด๋ค! ์๋ฅผ ๋ค์ด ๋ค์ ์ฝ๋์ ๊ฐ์ด try ๋ธ๋ก ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ปค๋ฅ์ ์ ๋ซ๋ ์ฝ๋๊ฐ ์์๋๋ฐ ๊ฐ์๊ธฐ ๋ฐ์ํ ์์ธ ๋๋ฌธ์ ์ด๊ฒ์ ์คํํ์ง ๋ชปํ๋ค๋ฉด ์ฌ์ฉํ ์ ์๋ ์ปค๋ฅ์ ์ด ์ ์ ์ค์ด ๋์ค์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ํ ์ฐ๊ฒฐํ ์ ์๋ ์ํ์ ์ด๋ฅผ ์ ์๋ค. try { dbconn.Open(); //dbconn์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ //... dbconn.Close(); //์ด๋ฐ ์ฝ๋๋ ๋ฒ๊ทธ๋ฅผ ์ผ์ผํฌ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. } catch (xxxException e) { //... } ๊ทธ๋ ๋ค๊ณ ..
์์ธ ์ฒ๋ฆฌํ๊ธฐ(3) ์์ธ ๋์ง๊ธฐ
https://youtu.be/Os_o-7eGu7Y try catch ๋ฌธ์ผ๋ก ์์ธ๋ฅผ ๋ฐ๋๋ค๋ ๊ฒ์ ์ด๋์ ๊ฐ ์์ธ๋ฅผ ๋์ง๋ค๋ ์ด์ผ๊ธฐ์ด๋ค. ์์ธ๋ฅผ ๋์ง๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค. ์์ธ๋ throw๋ฌธ์ ์ด์ฉํด์ ๋์ง๋ค. try { //... throw new Exception("์์ธ๋ฅผ ๋์ง๋๋ค."); } catch (Exception e) { WriteLine(e.Message); //throw ๋ฌธ์ ํตํด ๋์ ธ์ง ์์ธ ๊ฐ์ฒด๋ catch๋ฌธ์ ํตํด ๋ฐ๋๋ค. } ๋ฉ์๋ ์์์ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด(๋๋ ๋ง์กฑํ์ง ๋ชปํ๋ฉด) ์์ธ๋ฅผ ๋์ง๊ณ , ์ด๋ ๊ฒ ๋์ ธ์ง ์์ธ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ try~catch๋ฌธ์์ ๋ฐ์๋ธ๋ค. using System; using System.Collections; using static System.Co..
์์ธ ์ฒ๋ฆฌํ๊ธฐ(2) System.Exception ํด๋์ค
https://youtu.be/Os_o-7eGu7Y 12.3 System.Exception ํด๋์ค System.Exception ํด๋์ค๋ ๋ชจ๋ ์์ธ์ ์กฐ์์ด๋ค. C#์์ ๋ชจ๋ ์์ธ ํด๋์ค๋ ๋ฐ๋์ ์ด ํด๋์ค๋ก๋ถํฐ ์์๋ฐ์์ผ ํ๋ค. IndexOutOfRangeException ์์ธ๋ System.Exception ์ผ๋ก๋ถํฐ ํ์๋์๋ค. ๊ทธ๋ ๋ค๋ฉด ์์ ๊ด๊ณ๋ก ์ธํด ๋ชจ๋ ์์ธ ํด๋์ค๋ System.Exception ํ์์ผ๋ก ๊ฐ์คํ ์ ์๊ณ , System.Exception ํ์์ ์์ธ๋ฅผ ๋ฐ๋ catch ์ ํ๋๋ฉด ๋ชจ๋ ์์ธ๋ฅผ ๋ค ๋ฐ์ ์ ์๋ค๋ ๋ป์ด ๋๋ค. try { } catch(IndexOutOfRangeException e) { //... } catch(DivideByZeroException e) { //...
60. ์์ธ ์ฒ๋ฆฌํ๊ธฐ(1)
https://youtu.be/Os_o-7eGu7Y ์ฑํฐ 12 ์์ธ ์ฒ๋ฆฌํ๊ธฐ ์ด ์ฅ์ ํต์ฌ ๊ฐ๋ ๊ตฌ์กฐ์ ์์ธ ์ฒ๋ฆฌ๊ฐ ๋ฌด์์ธ์ง ์ดํดํ๋ค try~catch~finally ๋ฌธ์ ์ด์ฉํ ์์ธ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ตํ๋ค System.Exception ํด๋์ค๋ฅผ ์ดํดํ๋ค throw ๋ฌธ์ ์ด์ฉํ์ฌ ์์ธ๋ฅผ ๋์ง๋ ๋ฐฉ๋ฒ์ ์ตํ๋ค ์ฌ์ฉ์ ์ ์ ํด๋์ค๋ฅผ ์ ์ํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ตํ๋ค ์์ธ์ ๋ํ์ฌ ์ ์: ํ๋ก๊ทธ๋๋จธ๊ฐ ์๊ฐํ๋ ์๋๋ฆฌ์ค์์ ๋ฒ์ด๋๋ ์ฌ๊ฑด, ์ด๊ฒ์ ์์ธ๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์1) ์ซ์๊ฐ ์ ๋ ฅ๋์ด์ผ ํ๋ ๋ณ์์ ๋ฌธ์์ด ์ ๋ ฅ ์๋ ์2) ํ์ผ์ ์ ์ฅ์ ํ๋๋์คํฌ ์ฉ๋ ์์ง ์์ธ์ฒ๋ฆฌ : ํ๋ก๊ทธ๋จ์ ์ค๋ฅ๋ ๋ค์ด์ผ๋ก ์ด์ด์ง์ง ์๋๋ก ์ ์ ํ๊ฒ ์ฒ๋ฆฌํ๋ ๊ฒ using System; using System.Collections; using..
59. foreach๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ผ๋ฐํ ํด๋์ค
foreach๋ฅผ ์ฌ์ฉํ ์ ์๋ ํด๋์ค๋ฅผ ๋ง๋๋ ๋ฐ ํ์ํ ๊ฒ์... IEnumerable ์ธํฐํ์ด์ค๋ฅผ ์์ํด์ ํด๋์ค๋ฅผ ๋ง๋๋ ๊ฒ์ด๋ค. ์ผ๋ฐํ ํด๋์ค๋ IEnumerable ์ธํฐํ์ด์ค๋ฅผ ์์ํ๋ฉด ์ผ๋จ์ foreach๋ฅผ ํตํด ์ํํ ์ ์์ง๋ง, ์์๋ฅผ ์ํํ ๋๋ง๋ค ํ์ ๋ณํ์ ์ํํ๋ ์ค๋ฒ๋ก๋๊ฐ ๋ฐ์ํ๋ค๋ ๋ฌธ์ ์ ์ด ์๋ค. (๊ธฐ๊ป ์ผ๋ฐํ๋ฅผ ํตํด ํ์ ๋ณํ์ ์ ๊ฑฐํ๋๋ foreach ๊ตฌ๋ฌธ์์ ํ์ ๋ณํ์ ์ผ์ผ์ผ ์ฑ๋ฅ์ ์ ํ์ํจ๋ค๋...) System.Collections.Generic ๋ค์์คํ์ด์ค์ ์ด ๋ฌธ์ ๋ฅผ ํ ์ ์๋ ์ด์ ๊ฐ ์๋ค. IEnumerable์ ์ผ๋ฐํ ๋ฒ์ ์ธ IEnumerable ์ธํฐํ์ด์ค๊ฐ ๋ฐ๋ก ๊ทธ๊ฒ์ด๋ค. ์ด ์ธํฐํ์ด์ค๋ฅผ ์์ํ๋ฉด ํ์ ๋ณํ์ผ๋ก ์ธํ ์ฑ๋ฅ ์ ํ๊ฐ ์์ผ๋ฉด์๋ foreach ์..
58. ์ผ๋ฐํ ์ปฌ๋ ์
์ผ๋ฐํ ์ปฌ๋ ์ ์ object ํ์ ๊ธฐ๋ฐ์ ์ปฌ๋ ์ ์ด ๊ฐ๊ณ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค. ์ผ๋ฐํ ์ปฌ๋ ์ ์ ์ผ๋ฐํ์ ๊ธฐ๋ฐํด์ ๋ง๋ค์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ ํ ๋ ์ปฌ๋ ์ ์์ ์ฌ์ฉํ ํ์์ด ๊ฒฐ์ ๋๊ณ , ์ธ๋ฐ์๋ ํ์ ๋ณํ์ ์ผ์ผํค์ง ์๋๋ค. ๋ํ ์๋ชป๋ ํ์์ ๊ฐ์ฒด๋ฅผ ๋ด๊ฒ ๋ ์ํ๋ ํผํ ์ ์๋ค. (object ํ์ ์ปฌ๋ ์ ์ ๋จ์ : ์ด๋ ํ ๊ฐ์ฒด๋ฅผ ๋ค ๋ด์ ์ ์๋ค๋ ์ฅ์ ๋๋ฌธ์ ํ์์ ์ผ๋ก ์ฑ๋ฅ๋ฌธ์ ๊ฐ ์์. ์ปฌ๋ ์ ์ ์์์ ์ ๊ทผํ ๋๋ง๋ค ํ์ ๋ณํ์ด ์ผ์ด๋๊ธฐ ๋๋ฌธ) object ์ปฌ๋ ์ ์ผ๋ฐํ ์ปฌ๋ ์ ArrayList List Queue Queue Stack Stack Hashtable Dictionary List, Queue, Stack, Dictionary๋ ๊ฐ๊ฐ ArrayLisst, Queue, Stack, Hashta..
57. ์ผ๋ฐํ ํ๋ก๊ทธ๋๋ฐ ์์ ๋ชจ์
using System; using System.Collections; namespace CopyingArray { class MainApp { static void CopyArray(T[] source, T[] target) { for (int i = 0; i < source.Length; i++) target[i] = source[i]; } static void Main(string[] args) { int[] source = {1,2,3,4,5}; int[] target = new int[source.Length]; CopyArray(source, target); foreach (var element in target) Console.WriteLine(element); string[] source2..
56. ์ผ๋ฐํํ ๋, ํ์ ๋งค๊ฐ๋ณ์ ์ ์ฝ์ํค๊ธฐ
์ผ๋ฐํ ํ๋ก๊ทธ๋๋ฐ(์๋ ์์์ ์ฐธ๊ณ ํ์ฌ ํ์ตํ์์ต๋๋ค.) https://youtu.be/etvC-lj39ws ch11 ์ผ๋ฐํ ํ๋ก๊ทธ๋๋ฐ (tistory.com)