32. ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ(delegate)์˜ ๊ธฐ๋ณธ ๊ฐœ๋…
ยท
๐Ÿ’ป Programming Language/C#
๋ธ๋ฆฌ๊ฒŒ์ดํŠธ(Delegate) : ๋ฉ”์†Œ๋“œ๋ฅผ ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“ค์–ด ์ง„ ๊ฒƒ. => ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ ์ด์šฉํ•ด ํฌ์žฅํ•˜๊ณ  ์ „๋‹ฌ.(๋‚ด๊ฐ€ ์ดํ•ดํ•œ๋ฐ”๋กœ๋Š” .. ใ…‡ใ…‡) void AAA(int arg1){ ... } int a = 123; AAA(a); class DemoClass { int id; string name; public int DisplayInfo() {..} } void AAA(DemoClass d){ ... } DemoClass d = new DemoClass(); AAA(d) ์œ„์˜ ์ฝ”๋“œ๋“ค์€ ๊ธฐ์กด ์ธ์ž๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด ํ˜น์€ ๊ฐ’์„ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹ ๋ฉ”์†Œ๋“œ๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ์‹ถ์„๋• delegate๋ฅผ ์‚ฌ์šฉ void AAA(Mydelegate Method){ ... } int StringToInt(str..
31. ์˜ˆ์™ธํ•„ํ„ฐ(Exception Filter)
ยท
๐Ÿ’ป Programming Language/C#
Exception Filter : catch์ ˆ์ด ๋ฐ›์•„๋“ค์ผ ์˜ˆ์™ธ ๊ฐ์ฒด์— ์ œ์•ฝ์‚ฌํ•ญ์„ ์ฃผ๊ณ  ๊ทธ ์‚ฌํ•ญ์— ๋งŒ์กฑํ•˜๋Š” ๊ฒฝ์šฐ์— ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ catch๋ฌธ ๋’ค์— when ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉ. ์‚ฌ์šฉ์ž ์ •์˜ ์˜ˆ์™ธ ํด๋ž˜์Šค ๋ชจ๋“  ์˜ˆ์™ธ ๊ฐ์ฒด๋Š” System.Exception ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ํŒŒ์ƒ๋œ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ์˜ˆ์™ธ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๋•Œ๋„ ์—ญ์‹œ System.Exception ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ๋งŒ๋“ ๋‹ค. ์‚ฌ์šฉ ์˜ˆ์ œ ์ฝ”๋“œ using System.Collections; namespace ExceptionEx { // ์‚ฌ์šฉ์ž ์ •์˜ ์˜ˆ์™ธ ํด๋ž˜์Šค class UserException : Exception { public int ErrorCode { get; set; } } class Program { static void Mai..
30. C# 7.0์—์„œ throw๋ฌธ ํ‘œํ˜„์‹, finally ์ ˆ
ยท
๐Ÿ’ป Programming Language/C#
C# 7.0์—์„œ์˜ throw๋ฌธ์˜ ํ‘œํ˜„์‹(Expression) using System.Collections; //c# 7.0์—์„œ์˜ throw๋ฌธ์˜ ํ‘œํ˜„์‹(Expression) namespace ExceptionEx { class Program { static void Main(string[] args) { try { int? aa = null; int bb = aa ?? throw new ArgumentNullException(); } catch (ArgumentNullException e) { Console.WriteLine(e.Message); } try { int[] arr = {1, 2, 3 }; int idx = 5; int value = arr[idx >= 0 && idx < 4 ? idx : t..
29. System.Exceptionํด๋ž˜์Šค, throw๋ฌธ
ยท
๐Ÿ’ป Programming Language/C#
System.Exception ํด๋ž˜์Šค๋Š” ๋ชจ๋“  Exception์˜ Baseํด๋ž˜์Šค์ด๋‹ค. ๋ชจ๋“  Exception๋“ค์€ System.Exception ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค. ์•ž์„œ ์‚ฌ์šฉํ–ˆ๋˜ IndexOutOfRangeException ์˜ˆ์™ธ ํด๋ž˜์Šค๋„ System.Exception์œผ๋กœ๋ถ€ํ„ฐ ํŒŒ์ƒ๋œ ๊ฒƒ System.Exception์„ ์ด์šฉํ•ด์„œ ๋ชจ๋“  ์˜ˆ์™ธ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋Š” ์ด์œ  ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ–ˆ๋˜ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์•„๋„ ๋  ์˜ˆ์™ธ๊นŒ์ง€ ๋ชจ๋‘ ์ฒ˜๋ฆฌ๋ฅผ ํ•จ์œผ๋กœ์จ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— System.Exception์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์‹ ์ค‘ํ•˜๊ฒŒ ๊ณ ๋ คํ•ด์•ผํ•œ๋‹ค. throw๋ฌธ ํ˜•์‹ try { throw new Exception("์˜ˆ์™ธ๋ฅผ ๋˜์ง"); } catch(Exception e) { Console.Writ..
29-1. Null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž(Null Operator)
ยท
๐Ÿ’ป Programming Language/C#
? : Nullable ํƒ€์ž…์„ ์„ ์–ธํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ์ž ?? ๋„(Null) ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž a ?? 100 ์—์„œ a ๊ฐ’์ด null์ด๋ฉด 100์„ ๋ฆฌํ„ดํ•˜๊ณ , a๊ฐ€ null์ด ์•„๋‹ˆ๋ฉด a์˜ ๋ณธ๋ž˜๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค. ๊ฐ’์ด null์ด ๋˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋“ฏํ•˜๋‹ค. (๊ฐœ์ธ์ ์ธ ์˜๊ฒฌ) namespace NullOperatorEx { class Program { static void Main(string[] args) { int? bb = null; Console.WriteLine($"{bb ?? 10}"); bb = 12; Console.WriteLine($"{bb ?? 10}"); string str1 = null; // string ํƒ€์ž…์€ nullable์ด ๊ฐ€๋Šฅํ•˜๊ธฐ์— ๋”ฐ๋กœ nullable์—ฐ์‚ฐ์ž(`?`)๊ฐ€ ๋ถ™์ง€ ์•Š์•„..
28. ์˜ˆ์™ธ์ฒ˜๋ฆฌ(Exception Handling)
ยท
๐Ÿ’ป Programming Language/C#
์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ตฌ๋ฌธ(try - catch) try{ // ์‹คํ–‰์ฝ”๋“œ } catch(Exception ๊ฐ์ฒด1){ // ์–ด๋–ค ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„๋•Œ ์ฒ˜๋ฆฌ ์ฝ”๋“œ } catch(Exception ๊ฐ์ฒด2){ // catch๋ฌธ์€ ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. } ... Ex - ๊ธฐ์กด ์˜ˆ์™ธ ๋ฐœ์ƒ ์ฝ”๋“œ namespace ExceptionEx { class Program { static void Main(string[] args) { int[] array = {1,2,3,4,5}; for(int i = 0; i < 6; i++) { Console.WriteLine(array[i]); } Console.WriteLine("ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ!!"); } } } Output 1 2 3 4 5 Unhandled exception. System.In..
27. ์ œ๋„ค๋ฆญ ์ปฌ๋ ‰์…˜
ยท
๐Ÿ’ป Programming Language/C#
์ œ๋„ค๋ฆญ ์ปฌ๋ ‰์…˜(Generic Collection)์˜ ์กด์žฌ ๋ฐ ์‚ฌ์šฉ ์ด์œ  Generic Collection : object ํ˜•์‹์— ๊ธฐ๋ฐ˜ํ•œ ๊ธฐ์กด ์ปฌ๋ ‰์…˜์˜ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค. Generic(์ผ๋ฐ˜ํ™”) ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ์‹œ ์‚ฌ์šฉํ•  ํ˜•์‹์ด ์ •ํ•ด์ง€๋ฏ€๋กœ ํ˜•๋ณ€ํ™˜ ๋ฐœ์ƒ์ด ์ค„์–ด๋“ ๋‹ค. ์ปฌ๋ ‰์…˜์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์„ฑ๋Šฅ์ƒ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. โญ๏ธโญ๏ธโญ๏ธ๊ธฐ์กด ์ปฌ๋ ‰์…˜์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์„ฑ๋Šฅ์ƒ์˜ ๋ฌธ์ œ ์ปฌ๋ ‰์…˜์€ ๋ฐ์ดํ„ฐ๋ฅผ objectํ˜•์‹์œผ๋กœ ์ €์žฅํ•จ. int, double, string๊ณผ ๊ฐ™์€ ํƒ€์ž…์„ ์ปฌ๋ ‰์…˜์— ์ €์žฅํ•˜๊ฒŒ๋˜๋ฉด objectํ˜•์‹์œผ๋กœ ์ €์žฅํ•˜๊ณ  ์ปฌ๋ ‰์…˜์ด ์ปดํŒŒ์ผ๋ ๋•Œ ์ด์™€ ๊ฐ™์ด ํ˜•๋ณ€ํ™˜์ด ๋งค๋ฒˆ ์ผ์–ด๋‚˜๊ฒŒ๋จ. ๋˜ํ•œ ์ปดํŒŒ์ผ์‹œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ปฌ๋ ‰์…˜ ๋‚ด ์š”์†Œ(๋ฐ์ดํ„ฐ)์— ์ ‘๊ทผํ•  ๋•Œ์—๋„ ํ˜•๋ณ€ํ™˜์ด ๊ณ„์†ํ•ด์„œ ๋ฐœ์ƒํ•˜๊ธฐ ..