728x90

๐ŸŽฎ Unity Study/C# 19

[C#] Hash ?

Hash 1) ์ž„์˜์˜ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•ด ๊ณ ์ • ์ž๋ฆฌ์ˆ˜์˜ ์œ ์ผํ•œ? ๋ฌธ์ž์—ด๋กœ ๋ฆฌํ„ดํ•œ๋‹ค. 2) ์กฐ๊ธˆ์ด๋ผ๋„ ๋‹ค๋ฅธ ๊ฐ’์—๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค. 3) ๋งŒ๋“ค์–ด์ง„ Hash ๊ฐ’์—์„œ ์›๋ž˜์˜ ๊ฐ’ ์—ญ์‚ฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์‚ฌ์šฉ์˜ˆ์‹œ) ์•ˆ์‹ฌ๋ฒˆํ˜ธ, ๋ฌธ์„œ์˜ ๋ฌด๊ฒฐ์„ฑ, ๋น„ํŠธ์ฝ”์ธ ๋ฌด๊ฒฐ์„ฑ, ๊ณต์ธ์ธ์ฆ์„œ(+๋น„๋Œ€์นญ ์•”ํ˜ธํ™”ํ‚ค) ...

[C#] lambda์‹์ด๋ž€ ? ์–ธ์ œ ์‚ฌ์šฉํ• ๊นŒ ?

lambda ์‹ ? ํ•จ์ˆ˜์— ์ธ์ž๊ฐ’์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ๋„ฃ๊ธฐ ์œ„ํ•ด, + ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“  ๋ฌธ๋ฒ•. lambad ์‹์€ ์„ ์–ธํ•œ ์ž๋ฆฌ์—์„œ'๋งŒ' ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ‘๊ทผ์ง€์ •์ž, ๋ฐ˜ํ™˜๊ฐ’, ์ด๋ฆ„์ด ํ•„์š”์—†๋‹ค. ์žฌ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ํ˜ธ์ถœํ•ด์„œ ํ•œ๋ฒˆ๋งŒ ์‚ฌ์šฉํ•  ๋•Œ ํŽธ๋ฆฌํ•˜๋‹ค. ์œ„ ๊ฐœ๋…์„ ๋ฐ”ํƒ•์œผ๋กœ ์•„๋ž˜ ํ•จ์ˆ˜๋ฅผ lambda ์‹์œผ๋กœ ๋ฐ”๊ฟ”๋ณด์ž. public void LambdaTest(){ Debug.Log("LambdaTest"); } () => { Debug.Log("LambdaTest"); } ์ธ์ž์™€ ๋ฐ˜ํ™˜๊ฐ’์ด ์žˆ๋Š” ํ•จ์ˆ˜๋Š” ์–ด๋–ป๊ฒŒ ๋ฐ”๊ฟ€๊นŒ public int Add(int a, int b){ return a + b; } (int a, int b) => { return a + b; } ์‚ฌ์šฉ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด์ž. ..

[C#] ๋™๊ธฐ/๋น„๋™๊ธฐ (feat. Coroutine, Task, async/await)

*๋™๊ธฐ: ์ผ์„ ์ฃผ๊ณ  ๊ทธ ์ผ์ด ๋๋‚ ๋•Œ๊นŒ์ง€ ์•„๋ฌด๊ฒƒ๋„ ์•ˆํ•˜๊ณ  ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ. ex) ๋งคํ‘œ์†Œ ์ค„ *๋น„๋™๊ธฐ: ์ผ์„ ์ค€ ํ›„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‚ด ์ผ์„ ํ•˜๋Š” ๊ฒƒ. ex) ์ปคํ”ผ์ˆ ์ง„๋™๋ฒจ #๋™๊ธฐ์‹ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์˜ˆ์‹œ using System; public class TestClass { static void Main(string[] args) { PrintNumber(); PrintStart(); Console.ReadKey(); } private static void PrintNumber() { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } private static void PrintStart() { for (int i = 0; i < 10; i++) { Console.W..

[C#] Action ๊ณผ Func (feat. Delegate, callback)

Delegate: ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜ Action : ๋ฐ˜ํ™˜๊ฐ’์ด ์—†๋Š” ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ Func: ๋ฐ˜ํ™˜๊ฐ’์ด ์žˆ๋Š” ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ callback: ์ž‘์—…์ด ๋๋‚ฌ์Œ์„ ์•Œ๋ ค์ฃผ๋Š” ์šฉ๋„ * Delegate ๊ธฐ๋ณธํ˜•ํƒœ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. public class TestClass { delegate void MyDelegate(); public TestClass() { MyDelegate myDelegate = FuncTest; myDelegate(); } public void FuncTest() { } } Delegate๋ฅผ ํ•จ์ˆ˜์˜ ๋ฆฌํ„ดํƒ€์ž…, ์ธ์ž๊ฐ’์— ๋งž๊ฒŒ ์„ ์–ธํ•œ๋‹ค. ์‚ฌ์šฉ์ „์— ์„ ์–ธํ•˜๊ณ  ํ˜ธ์ถœํ•œ๋‹ค. ํ™œ์šฉ1) ์–ด๋–ค ๋ฒ”์ฃผ ์•ˆ์— ์žˆ๋Š” ์—ฌ๋Ÿฌ ํ•จ์ˆ˜๊ฐ€ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•  ๋•Œ public class TestClass { delegate void ..

[C#] List ๊ฐ™์€ Enumerable ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋“ค

https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable?view=net-7.0 Enumerable Class (System.Linq) Provides a set of static (Shared in Visual Basic) methods for querying objects that implement IEnumerable. learn.microsoft.com List ๋Š” IEnumerable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ฐ›๊ณ  ์žˆ๋‹ค. IEnumerable์€ Enumerator๋ฅผ ๊ฐ–๊ณ ์žˆ๋‹ค. ๋ฐ˜๋ณต์—์„œ ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋‚˜์”ฉ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์„ ๋•Œ IEnumerable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. *IEnumerable: Enumerator์—๊ฒŒ ๋‹ค์Œ ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„์„œ ํ•˜๋‚˜์”ฉ ๋„˜..

C# Code Convention

1) Name Casing Casing ๋‚ด์šฉ ์˜ˆ์ œ Camel Case ์ฒซ ๋ฌธ์ž๋Š” ์†Œ๋ฌธ์ž์ด๊ณ  ๊ณ„์†๋˜๋Š” ๋‹ค์Œ ๋‹จ์–ด์˜ ์ฒซ๋ฌธ์ž๋Š” ๋Œ€๋ฌธ์ž๋กœ ํ•œ๋‹ค. C#์—์„œ ๋ณ€์ˆ˜๋ช…์ด๋‚˜ ํ•„๋“œ๋ช…์— ์‚ฌ์šฉ๋œ๋‹ค. startIndex Pascal Case ์ฒซ ๋ฌธ์ž์™€ ๊ณ„์†๋˜๋Š” ๋‹ค์Œ ๋‹จ์–ด์˜ ์ฒซ๋ฌธ์ž๋ฅผ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ํ•œ๋‹ค. C#์—์„œ ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ๋ช…, ์†์„ฑ๋ช… ๋“ฑ์— ์‚ฌ์šฉ๋œ๋‹ค. StartIndex ์ฐธ๊ณ  ์‚ฌ์ดํŠธ) C# ์ฝ”๋”ฉ ๊ฐ€์ด๋“œ m.csharpstudy.com C#์ฝ”๋”ฉ: Name Casing C# ์ฝ”๋”ฉ: Name Casing ํด๋ž˜์Šค๋ช…, ๋ณ€์ˆ˜๋ช…, ๋ฉ”์„œ๋“œ๋ช… ๋“ฑ๊ณผ ๊ฐ™์€ ๋ช…์นญ์„ ์–ด๋–ค ๋Œ€์†Œ๋ฌธ์ž ํ˜•์‹์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š”๊ฐ€๋Š” ์ผ๊ด€๋œ ์ฝ”๋“œ๋ฅผ ์œ ์ง€ํ•˜๋Š”๋ฐ ์ค‘์š”ํ•˜๋‹ค. ์•„๋ž˜ ํ‘œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ช‡ m.csharpstudy.com

[KLA ๋ฉ€ํ‹ฐ์บ ํผ์Šค] C#7.0 ์ œ๋Œ€๋กœ ๋ฐฐ์šฐ๊ธฐ Part.2(์ž…๋ฌธ2)

22.08.04(๋ชฉ) [1~2์ฐจ์‹œ - ์ƒ์„ฑ์ž(Constructor)์™€ ์ข…๋ฃŒ์ž] * ์ƒ์„ฑ์ž(Constructor) : ์„ค๊ณ„๋œ ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฉ”์†Œ๋“œ์™€ ๊ฐ™์€ ๊ฒƒ. * ์ƒ์„ฑ์ž ํ˜•์‹ ํ•œ์ •์ž ํด๋ž˜์Šค๋ช… (๋งค๊ฐœ๋ณ€์ˆ˜๋ช…) { } * ์ƒ์„ฑ์ž ํŠน์ง• - ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•  ๋•Œ ์ƒ์„ฑ์ž๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ, ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด ์ค€๋‹ค. - ์ƒ์„ฑ์ž์˜ ์ด๋ฆ„์€ ํด๋ž˜์Šค์˜ ์ด๋ฆ„๊ณผ ๊ฐ™๋‹ค. * ์ข…๋ฃŒ์ž : ๊ฐ์ฒด์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜๋Š” ๊ฒƒ. * ์ข…๋ฃŒ์ž ํ˜•์‹ ~ํด๋ž˜์Šค๋ช… () { } * ์ข…๋ฃŒ์ž ํŠน์ง• - ํด๋ž˜์Šค๋ช…์— ~๋ฅผ ๋ถ™์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. - ์ƒ์„ฑ์ž์™€ ๋‹ฌ๋ฆฌ ํ•œ์ •์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. - ๋งค๊ฐœ๋ณ€์ˆ˜๋„ ์—†๋‹ค. ์˜ค๋ฒ„๋กœ๋”ฉ๋„ ์•ˆ๋จ. - ์ง์ ‘ ํ˜ธ์ถœ์ด ๋ถˆ๊ฐ€ํ•˜๊ณ  CLR(Common Language Runtime)์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๊ฐ์ฒด ์†Œ๋ฉธ ์‹œ์ ..

[KLA ๋ฉ€ํ‹ฐ์บ ํผ์Šค] C#7.0 ์ œ๋Œ€๋กœ ๋ฐฐ์šฐ๊ธฐ Part.1(์ž…๋ฌธ1)

22.07.14 (1~7์ฐจ์‹œ) [C#์˜ ์—ญ์‚ฌ] : C์–ธ์–ด -> C++ -> C# C์–ธ์–ด์—์„œ ๋ถ€์กฑํ–ˆ๋˜ OOP(๊ฐ์ฒด์ง€ํ–ฅ)๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ C++๋ฅผ ๋งŒ๋“ฌ. Window ์šด์˜์ฒด์ œ, Office ํ”„๋กœ๊ทธ๋žจ, Adobe ์‚ฌ์˜ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด C++๋กœ ๋งŒ๋“ค์–ด์ง. C#: C++์–ธ์–ด๋ฅผ ๋ฐœ์ „์‹œํ‚จ ์–ธ์–ด. Microsoft์‚ฌ์˜ Anders Hejisberg๊ฐ€ ๊ฐœ๋ฐœ. .NET Framework์— ์ตœ์ ํ™”๋œ ์–ธ์–ด. (์ธํ„ฐ๋„ท ์„œ๋น„์Šค๋ฅผ ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์˜๋ฏธํ•˜๋Š” .NET๋„ Microsoft์‚ฌ๊ฐ€ ๋งŒ๋“ฌ) [4~5์ฐจ์‹œ C# ๋ฐ์ดํ„ฐ ํƒ€์ž…] bool: True or False - ์ •์ˆ˜ํ˜• byte: 8๋น„ํŠธ. unsigned ์ •์ˆ˜ํ˜• (integer) sbyte: 8๋น„ํŠธ signed ์ •์ˆ˜ํ˜• (u)short: 16๋น„ํŠธ (..

[C#] string.Format() ์‚ฌ์šฉ๋ฒ• (feat. ์ˆซ์ž ์•ž์— 0์ฑ„์šฐ๊ธฐ, ์†Œ์ˆ˜์  ์•„๋ž˜ *์ž๋ฆฌ๊นŒ์ง€ ํ‘œ๊ธฐํ•˜๊ธฐ)

1) ์ˆซ์ž ์‚ฌ์ด์ฆˆ ๋งŒํผ ์•ž์— 0 ์ฑ„์šฐ๊ธฐ string.Format("{0:D3}", 22); => ์ถœ๋ ฅ: 022 2) ์†Œ์ˆ˜์  ์•„๋ž˜ 2์ž๋ฆฌ ๊นŒ์ง€ ํ‘œ๊ธฐํ•˜๊ธฐ string str = string.Format("{0:f2}", 22.2222); => ์ถœ๋ ฅ: 22.22

728x90