๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ–ฅ๏ธ133

[C#] ๋ฆฌํ”Œ๋ ‰์…˜(Reflection): ๋™์  ๋ฉ”์„œ๋“œ ์ƒ์„ฑํ•˜๊ธฐ Reflection ๋ฆฌํ”Œ๋ ‰์…˜์„ ํ™œ์šฉํ•˜๋ฉด ๋™์ ์œผ๋กœ ๋ฉ”์„œ๋“œ๋„ ์ƒ์„ฑํ•˜๊ณ , ๋™์ ์œผ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. 1. Assembly ๋งŒ๋“ค๊ธฐ AssemblyBuilder assembly = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName("CalculatorAssembly"), AssemblyBuilderAccess.Run); 2. Assembly ์•ˆ์— Module ๋งŒ๋“ค๊ธฐ ModuleBuilder module = assembly.DefineDynamicModule("CalculatorModule"); 3. Module ์•ˆ์— Class ๋งŒ๋“ค๊ธฐ TypeBuilder type = module.DefineType("CalculatorClass"); .. 2023. 10. 11.
[C#] ๋ฆฌํ”Œ๋ ‰์…˜(Reflection): ๋™์  ์ธ์Šคํ„ด์Šค ์ƒ์„ฑํ•˜๊ธฐ Reflection ๋ฆฌํ”Œ๋ ‰์…˜์„ ์ด์šฉํ•ด์„œ ๋™์  ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์„ ์–ธํ•ด์ฃผ๋ฉด ๋œ๋‹ค. object a = Activator.CreateInstance(Type); ์ด๋ฒˆ์—๋„ Inventory๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ Inventory ์ธ์Šคํ„ด์Šค๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•ด๋ณด์ž. class Inventory { private string product; private int count; public Inventory() { product = ""; count = 0; } public Inventory(string product, int count) { this.product = product; this.count = count; } public void Print() { Console.WriteLine($.. 2023. 10. 10.
[C#] ๋ฆฌํ”Œ๋ ‰์…˜(Reflection) Reflection ๋ฆฌํ”Œ๋ ‰์…˜ ๋ฆฌํ”Œ๋ ‰์…˜(Reflection)์€ '๋ฐ˜์‚ฌ'๋ผ๋Š” ๋œป์ด๋‹ค. ๋ฐ˜์‚ฌ๋˜๋ฉด ์ž์‹ ์˜ ๋ชจ์Šต์ด ๋ณด์ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, C#์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜์€ ์ž๊ธฐ ์ž์‹ ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ฐ˜์‚ฌํ•˜๋“ฏ์ด ๋ณด๋Š” ๊ธฐ๋Šฅ์„ ๋งํ•œ๋‹ค. ๋‹ค์‹œ ์ •ํ™•ํžˆ ์ •๋ฆฌํ•˜์ž๋ฉด, ๋ฆฌํ”Œ๋ ‰์…˜์ด๋ž€ ๋Ÿฐํƒ€์ž„ ์ค‘์— ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์–ป๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ๊ฐ์ฒด์˜ ํ˜•์‹ ์ด๋ฆ„, ํ”„๋กœํผํ‹ฐ, ๋ฉ”์„œ๋“œ, ํ•„๋“œ, ์ด๋ฒคํŠธ ๋“ฑ ๊ทธ ๊ฐ์ฒด์˜ ์ •๋ณด๋ฅผ ๋“ค์—ฌ๋‹ค๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ์— ๊ด€ํ•œ ๋ฐ์ดํ„ฐ์ด๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์„ค๋ช…, ๊ตฌ์กฐ, ์†์„ฑ ๋˜๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋งํ•œ๋‹ค. ๋ฆฌํ”Œ๋ ‰์…˜์ด ํ•„์š”ํ•œ ์ด์œ  ๊ทธ๋ ‡๋‹ค๋ฉด ๋ฆฌํ”Œ๋ ‰์…˜์€ ์™œ ํ•„์š”ํ•œ ๊ฒƒ์ผ๊นŒ? ๋ฆฌํ”Œ๋ ‰์…˜์€ ์ฃผ๋กœ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ๋•Œ ๋งŽ์ด ์“ฐ์ธ๋‹ค. ์ฝ”๋“œ์˜ ๊ฐ ๋ถ€๋ถ„์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•  ๋•Œ, ์šฐ๋ฆฌ๋Š” ๊ทธ ๋ฉ”์„œ.. 2023. 10. 10.
[์ด๊ฒƒ์ด C#์ด๋‹ค] Chapter15: ์—ฐ์Šต๋ฌธ์ œ (LINQ) 1. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฐ์—ด์ด ์žˆ๋‹ค๊ณ  ํ•  ๋•Œ, Cost๋Š” 50์ด์ƒ, MaxSpeed๋Š” 150 ์ด์ƒ์ธ ๋ ˆ์ฝ”๋“œ๋งŒ ์กฐํšŒํ•˜๋Š” LINQ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”. class Car { public int Cost { get; set; } public int MaxSpeed { get; set; } } class MainApp { static void Main(string[] args) { // ... Car[] cars = { new Car(){Cost= 56, MaxSpeed= 120}, new Car(){Cost= 70, MaxSpeed= 150}, new Car(){Cost= 45, MaxSpeed= 180}, new Car(){Cost= 32, MaxSpeed= 200}, new Car(){Cost= 82, MaxSpeed.. 2023. 10. 5.
[C#] ๋žŒ๋‹ค์‹๊ณผ Func, Action ๋Œ€๋ฆฌ์ž ๋žŒ๋‹ค์‹ ์„ ์–ธํ•˜๋Š” ๋ฒ• ๋žŒ๋‹ค์‹์€ ๊ธฐ๋ณธ์ ์œผ๋กœ (๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก) => ์‹ ํ˜น์€ {์ฝ”๋“œ๋ธ”๋ก} ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด ์•„๋ž˜ ๋‘ ์ฝ”๋“œ๋Š” ๊ฐ™์€ ๋ฌด๋ช… ํ•จ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. HelloWorld H = delegate(int a, int b) { return a + b; } HelloWorld H = (a, b) => a + b; Func ๋Œ€๋ฆฌ์ž Func ๋Œ€๋ฆฌ์ž๋Š” ์ตœ๋Œ€ 16๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. (0๊ฐœ ~ 17๊ฐœ) Func addOne = (int x) => x + 1; int result1 = addOne(5); // 6 ๋ณดํ†ต์€ Func๋ผ๊ณ  ์„ ์–ธํ•˜๊ธฐ ๋ณด๋‹ค๋Š”, var๋กœ ์„ ์–ธํ•œ๋‹ค. var addTwo = (int x) => x + 2; int result2 = addTwo(5); // 7 Action ๋Œ€๋ฆฌ์ž .. 2023. 9. 18.
[C#] ๋Œ€๋ฆฌ์ž(delegate)์™€ ์ด๋ฒคํŠธ deligate (๋Œ€๋ฆฌ์ž) delegate๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”์„œ๋“œ๋ฅผ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๋ณ€์ˆ˜์ฒ˜๋Ÿผ delegate์— ๋ฉ”์„œ๋“œ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜์™€ ๊ฐ™์€ delegate๋Š” delegate int MathOperation(int a, int b); int ๋‘ ๊ฐœ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›๊ณ , ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ชจ๋“  ํ•จ์ˆ˜๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค. int Add(int a, int b) { return a + b; } int Subtract(int a, int b) { return a - b; } Add์™€ Substract ๋ฉ”์„œ๋“œ๋Š” ๋‹ค๋ฅด์ง€๋งŒ, ๋‘˜ ๋‹ค ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ intํ˜• 2๊ฐœ๋ฅผ ๋ฐ›๊ณ , intํ˜•์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— delegate MathOperation์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค. delegate๋Š” ์„ ์–ธํ•˜๊ณ  ์„ ์–ธํ•œ ๋งค๊ฐœ๋ณ€.. 2023. 9. 10.
[์ด๊ฒƒ์ด C#์ด๋‹ค] Chapter12: ์—ฐ์Šต๋ฌธ์ œ 1.์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์˜ˆ์™ธ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. try~catch๋ฌธ์„ ์ด์šฉํ•ด์„œ ์˜ˆ์™ธ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์žก์•„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์„ธ์š”. using System; namespace Ex12_1 { class MainApp { static void Main() { int[] arr = new int[10]; for(int i = 0; i < 10; ++i) arr[i] = i; for(int i = 0; i < 11; ++i) Console.WriteLine(arr[i]); } } } 0 1 2 3 4 5 6 7 8 9 ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ: System.IndexOutOfRangeException: ์ธ๋ฑ์Šค๊ฐ€ ๋ฐฐ์—ด ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. try catch๋กœ ๋ฌถ์–ด์ฃผ๋ฉด ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜.. 2023. 8. 25.
[C#] try catch์™€ throw๋ฌธ/์‹ try~catch try catch๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์˜ˆ์™ธ์ฒ˜๋ฆฌ์— ์“ฐ์ธ๋‹ค. try { // ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ } catch (์˜ˆ์™ธ์ข…๋ฅ˜ e) //๊ทธ ์˜ˆ์™ธ๋ฅผ e๋ผ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์Œ { // ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ฝ”๋“œ } catch (์˜ˆ์™ธ์ข…๋ฅ˜ ex) //๊ทธ ์˜ˆ์™ธ๋ฅผ ex๋ผ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋ฐ›์Œ { // ์œ„์—์„œ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์€ ๋‹ค๋ฅธ ์˜ˆ์™ธ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„ } finally { // ์˜ˆ์™ธ ๋ฐœ์ƒ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ํ•ญ์ƒ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ } throw throw๋Š” ์˜ˆ์™ธ๋ฅผ ๋˜์งˆ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. using System; class Program { static void Main(string[] args) { try { int age = -1; if (age < 0) { throw new ArgumentException("๋‚˜์ด๋Š” ์Œ์ˆ˜์ผ ์ˆ˜ .. 2023. 8. 25.

"); wcs_do();