7๋ฒˆ์งธ ์Šคํ„ฐ๋””
ยท
๐Ÿ’ป Programming Language/C#
C# ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ !!! ์†Œํ”„ํŠธ์›จ์–ด ์‹ ๋ขฐ์„ฑ ํ…Œ์ŠคํŒ…์„ ํ•˜๊ธฐ์œ„ํ•ด ์†Œํ”„ํŠธ์›จ์–ด ์‹ ๋ขฐ์„ฑ ํ…Œ์ŠคํŒ…์— ์žˆ์–ด ํƒ€ ์–ธ์–ด๋“ค๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ C#์— ๋น„ํ•ด ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ต๊ฑฐ๋‚˜ ๋ณต์žกํ•จ Window ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ œ์ž‘ํ• ๋•Œ C++, C#, Java ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์‹ ๋ขฐ์„ฑ์‹œํ—˜ ๋ฉด์—์„œ C#์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ด์ ์ด ์žˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค๋„ ์œˆ๋„์šฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์–ธ์–ด๋กœ๋Š” ์ตœ์‹ ! ์ถ”๊ฐ€์ ์œผ๋กœ ์ƒ์‚ฐ์„ฑ์ด ์ข‹๋‹ค๋Š” ์ธก๋ฉด๋„ ์žˆ๋‹ค. UI๋ฅผ ์˜ˆ์˜๊ฒŒ ํ•ด์ฃผ๋Š” ํˆด๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ ๋™๊ธฐํ™”์— ์žˆ์–ด ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ์—๋„ lock ์ถ”๊ฐ€! Output ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ์Šค๋ ˆ๋“œ ๊ฐ์ฒด ์ƒ์„ฑํ•ด๋ณด๊ธฐ Output ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ vs ๋ถ„์‚ฐ์ฒ˜๋ฆฌ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ ํ•˜๋‚˜์˜ ์ž‘์—…(work)๋ฅผ ๋‚˜๋ˆ ์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค. Divide & Merge ๊ฐ๊ฐ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ๋กœ์ง์ด ๊ฐ™์€๊ฒฝ์šฐ์— ์‚ฌ์šฉ ํ˜„์žฌ ์‹œ์Šคํ…œ์—์„œ๋Š” ๊ฑฐ์˜ ์‚ฌ..
6๋ฒˆ์งธ ์Šคํ„ฐ๋””
ยท
๐Ÿ’ป Programming Language/C#
๊ณผ์ œ [๊ตฌํ˜„๋‚ด์šฉ] ์ž…๋ ฅ Thread ๋Š” ์ž‘์—… ์ˆœ์„œ์™€ ์ž‘์—… ๋‚ด์šฉ์„ ์ฒ˜๋ฆฌ Thread๋กœ ์ „๋‹ฌํ•˜๊ณ  ์ฒ˜๋ฆฌ Thread๋Š” ์ž‘์—… ์ˆœ์„œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž‘์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์—ฌ ์ถœ๋ ฅ ์กฐ๊ฑด ์ž…๋ ฅ Thread 2๊ฐœ Thread ๋ฏธ๋ฆฌ ์ •์˜๋œ ํŒŒ์ผ ์„ ์ฝ์–ด์„œ ์ฒ˜๋ฆฌ Thread๋กœ ์ „๋‹ฌ ํŒŒ์ผ์„ ๋‹ค ์ฝ์œผ๋ฉด Thread ์ข…๋ฃŒ ์ฒ˜๋ฆฌ Thread 1๊ฐœ Thread ์ž…๋ ฅ Thread์™€ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•  List ์ƒ์„ฑ ์ฒ˜์Œ ์ž‘์—…์ด ์ž…๋ ฅ๋  ๋•Œ ๊นŒ์ง€ ์ฒ˜๋ฆฌ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜์ง€ ์•Š์Œ(์ฒ˜์Œ ์ž‘์—… ๋ฒˆํ˜ธ 0) ๋งˆ์ง€๋ง‰ ์ž‘์—…์ด ์ž…๋ ฅ๋˜๋ฉด Thread ์ข…๋ฃŒ (9๋ฒˆ ์ž‘์—…์ด ์ž…๋ ฅ๋˜๋ฉด ์ข…๋ฃŒ) ๊ตฌํ˜„ ์ฝ”๋“œ using System; using System.IO; using System.Collections.Generic; using System.Threading.Tasks; na..
5๋ฒˆ์งธ ์Šคํ„ฐ๋””
ยท
๐Ÿ’ป Programming Language/C#
์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ๋ž€?!!? public delegate void EventHandler(object sender, EventArgs e); Public delegate void EventHandler(object sender, TEventArgs e); public delegate void EventHandler(object sender, EventArgs e); ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋ฉ”์„œ๋“œ๋ฅผ ๋‚˜ํƒ€๋ƒ„ Public delegate void EventHandler(object sender, TEventArgs e); ์ด๋ฒคํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•  ๋•Œ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋ฉ”์„œ๋“œ๋ฅผ ๋‚˜ํƒ€๋ƒ„ ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ ์žˆ๋Š” e ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ฉด 1 ๋ฒˆ ๋ฉ”์†Œ๋“œ์˜ ๊ฒฝ์šฐ ๋‘๋ฒˆ์งธ e ๊ฐ์ฒด๋Š” ์ด๋ฒคํŠธ์˜..
4๋ฒˆ์งธ ์Šคํ„ฐ๋”” ์ดํ›„ ์ •๋ฆฌ
ยท
๐Ÿ’ป Programming Language/C#
catch ์ˆœ์„œ ๋’ค์ฃฝ๋ฐ•์ฃฝํ•ด์„œ ํ™•์ธ class Program { class A { public int field; public static int getField(A obj) { return obj.field; } } static void Main(string[] args) { try { // DivideByZeroException int a = 10; int b = 0; Console.WriteLine(a / b); // NullReferenceException A obj = null; Console.WriteLine(A.getField(obj)); // IndexOutOfRangeException int[] arr = { 1, 2, 3 }; for (int i = 0; i < 4; i++) { Cons..
3๋ฒˆ์งธ ์Šคํ„ฐ๋”” ์ดํ›„ ์ •๋ฆฌ
ยท
๐Ÿ’ป Programming Language/C#
ํ˜•๋ณ€ํ™˜๊ณผ ๊ด€๋ จํ•˜์—ฌ ... as ์—ฐ์‚ฐ์ž๋Š” ์ฐธ์กฐํ˜•์—๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๊ธฐ๋ณธ ๊ฐ’ํ˜•์‹์—๋Š” ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ธฐ๋ณธ ๊ฐ’ ํ˜•์‹์—๋Š” int, byte, char, long ... ๊ธฐ๋ณธ ๊ฐ’ ํ˜•์‹์— nullable => ? ํ‚ค์›Œ๋“œ๋Š” ์„ ์–ธ๋ฌธ์— ๋“ค์–ด๊ฐ€๋Š” ํ‚ค์›Œ๋“œ์ด๊ธฐ์— ์‚ฌ์šฉ๊ฐ€๋Šฅ int => value ํƒ€์ž… INTEGER => reference ํƒ€์ž… string ์€ ๊ธฐ๋ณธ ์ฐธ์กฐํ˜•์ด๋ผ๊ณ  ๋ฌธ์„œ์— ๋‚˜์˜ค๋Š”๋ฐ ์™œ ์•ˆ๋ ๊นŒ?? string์€ ์ฐธ์กฐ ํ˜•์‹์ด์ง€๋งŒ string๋Š” ์ฐธ์กฐ๊ฐ€ ์•„๋‹ˆ๋ผ string ๊ฐœ์ฒด์˜ ๊ฐ’์„ ๋น„๊ตํ•˜๋„๋ก ์ •์˜๋œ๋‹ค String ๊ณผ string ์˜ ์ฐจ์ด๋Š” ์—†๋‹ค. ๋‹ค๋งŒ string์ด System.String ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ ๊ตฌ์„ฑ๋˜์—ˆ๋‹ค. ๋ณดํ†ต string ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๊ธดํ•œ๋‹ค. string a = "hello"; string..
์Šคํ„ฐ๋””) ๋‘๋ฒˆ์งธ ์Šคํ„ฐ๋”” ํ”ผ๋“œ๋ฐฑ ๋ฐ ์งˆ๋ฌธ ์ •๋ฆฌ๋‚ด์šฉ
ยท
๐Ÿ’ป Programming Language/C#
sealed ํ‚ค์›Œ๋“œ๋ฅผ ๋ฉ”์†Œ๋“œ์— ์‚ฌ์šฉ! ๋ถ€๋ชจํด๋ž˜์Šค์—์„œ ์˜ค์ž‘๋™์„ ํ•˜๊ฒŒ๋” ํ•˜๋Š” ์ž์›์„ ์ž์‹ํด๋ž˜์Šค์—์„œ ๊ฑด๋“œ๋ฆฌ๋ฉด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ ๋ฉ”์†Œ๋“œ์— sealed ํ•œ์ •์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค. class Parent { public int num; public int count; public Parent(int num) { this.num = num; this.count = 0; Console.WriteLine("Parent ์ƒ์„ฑ์ž"); } public virtual void addCount() { } public void showInfo() { Console.WriteLine("Num : {0}, Count : {1}", this.num, this.count); } } class Counter : Parent { publ..
์Šคํ„ฐ๋””) ์ฒซ๋ฒˆ์งธ ์Šคํ„ฐ๋”” ํ”ผ๋“œ๋ฐฑ ๋ฐ ์งˆ๋ฌธ ์ •๋ฆฌ๋‚ด์šฉ
ยท
๐Ÿ’ป Programming Language/C#
1. ์ฐธ์กฐ ํ˜•์‹์„ ๋ฉ”์†Œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜๊ฒจ ํ• ๋‹น ํ›„ ๋ณ€ํ™”๋ฅผ ์ฃผ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? class MyField { public int field1; public int field2; } class AssignRefType { public static void addVal(MyField obj) { MyField temp = obj; temp.field1++; temp.field2++; } public static void subVal(MyField obj) { MyField temp = obj; temp.field1--; temp.field2--; } static void Main(string[] args) { MyField mf = new MyField() { field1 = 1, field2 = 2 }; M..