C#/์ด๊ฒƒ์ด C#์ด๋‹ค

    ๋Œ€๋ฆฌ์ž์™€ ์ด๋ฒคํŠธ(2)

    https://youtu.be/HNX_FZBU_wA ์ด๋ฒคํŠธ (Event) - c#์—์„œ ๊ฐ์ฒด์˜ ์‚ฌ๊ฑด์„ ํ‘œํ˜„ํ•˜๋Š” ํ˜•์‹ - ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๊ธฐ(Evnet Handler) : ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ ์‹คํ–‰๋˜๋Š” ๋ฉ”์†Œ๋“œ - ๋™์ž‘ ์›๋ฆฌ๋Š” ๋Œ€๋ฆฌ์ž์™€ ์œ ์‚ฌ * ์ด๋ฒคํŠธ๋Š” ์™ธ๋ถ€์—์„œ ์ง์ ‘ 'ํ˜ธ์ถœ'ํ•  ์ˆ˜ ์—†์Œ. ๊ฐ์ฒด์˜ ์€๋‹‰์„ฑ ํ‘œํ˜„์„ ์œ„ํ•ด - ๋Œ€๋ฆฌ์ž๋ฅผ event ํ•œ์ •์ž๋กœ ์ˆ˜์‹ํ•˜์—ฌ ์„ ์–ธ

    ๋Œ€๋ฆฌ์ž์™€ ์ต๋ช…๋ฉ”์†Œ๋“œ(1)

    ๋Œ€๋ฆฌ์ž์™€ ์ต๋ช…๋ฉ”์†Œ๋“œ(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) ์˜ˆ์™ธ ๋˜์ง€๊ธฐ

    ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•˜๊ธฐ(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 ํด๋ž˜์Šค

    ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•˜๊ธฐ(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)

    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. ์ผ๋ฐ˜ํ™”ํ•  ๋•Œ, ํ˜•์‹ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ œ์•ฝ์‹œํ‚ค๊ธฐ

    56. ์ผ๋ฐ˜ํ™”ํ•  ๋•Œ, ํ˜•์‹ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ œ์•ฝ์‹œํ‚ค๊ธฐ

    ์ผ๋ฐ˜ํ™” ํ”„๋กœ๊ทธ๋ž˜๋ฐ(์•„๋ž˜ ์˜์ƒ์„ ์ฐธ๊ณ ํ•˜์—ฌ ํ•™์Šตํ•˜์˜€์Šต๋‹ˆ๋‹ค.) https://youtu.be/etvC-lj39ws ch11 ์ผ๋ฐ˜ํ™” ํ”„๋กœ๊ทธ๋ž˜๋ฐ (tistory.com)