์ „์ฒด ๊ธ€

์ „์ฒด ๊ธ€

    [์ค‘๊ฐ„์ ๊ฒ€] ์ ‘๊ทผํ•œ์ •์ž internal์—์„œ ๊ฐ™์€ ์–ด์…ˆ๋ธ”๋ฆฌ๋ž€

    [์ค‘๊ฐ„์ ๊ฒ€] ์ ‘๊ทผํ•œ์ •์ž internal์—์„œ ๊ฐ™์€ ์–ด์…ˆ๋ธ”๋ฆฌ๋ž€

    ์–ด์…ˆ๋ธ”๋ฆฌ ์ •์˜ ์–ด์…ˆ๋ธ”๋ฆฌ ์ •์˜ ๋ฐ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ ˆํผ๋Ÿฐ์Šค๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์–ด์…ˆ๋ธ”๋ฆฌ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์—์…‹์ž…๋‹ˆ๋‹ค. ์–ด์…ˆ๋ธ”๋ฆฌ๋Š” ์Šคํฌ๋ฆฝํŠธ์— ์˜ํ•ด ์ •์˜๋˜๊ณ  ๋‹ค๋ฅธ ์–ด์…ˆ๋ธ”๋ฆฌ์— ๋Œ€ํ•œ ๋ ˆํผ๋Ÿฐ์Šค๋„ ์ •์˜ํ•˜๋Š” ์ปดํŒŒ์ผ๋œ ํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด๊ฐ€ ๋“ค์–ด ์žˆ๋Š” C# ์ฝ”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. C#์˜ ์–ด์…ˆ๋ธ”๋ฆฌ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์ •๋ณด๋Š” [.NET์˜ ์–ด์…ˆ๋ธ”๋ฆฌ]๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Unity๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒŒ์ž„ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์ „ ์ •์˜๋œ ์–ด์…ˆ๋ธ”๋ฆฌ์ธ Assembly-CSharp.dll๋กœ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค. (๋˜ํ•œ Unity๋Š” [๋ช‡ ๊ฐ€์ง€ ๋” ์ž‘๊ณ  ์ „๋ฌธํ™”๋œ ์‚ฌ์ „ ์ •์˜ ์–ด์…ˆ๋ธ”๋ฆฌ]๋„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.) ์ด ๋ฐฐ์—ด์€ ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•˜์ง€๋งŒ, ํ”„๋กœ์ ํŠธ์— ์ฝ”๋“œ๋ฅผ ๋” ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ ๋ช‡ ๊ฐ€์ง€ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค Unity๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์‹œ ์ปดํŒŒ..

    23. ์ƒ์†, ์ฝ”๋“œ ์žฌํ™œ์šฉ, ๊ธฐ๋ฐ˜ ํด๋ž˜์Šค, ํŒŒ์ƒ ํด๋ž˜์Šค, base, sealed

    ํด๋ž˜์Šค๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์œ ์‚ฐ์„ ๋ฌผ๋ ค๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.(ํ•„๋“œ, ๋ฉ”์†Œ๋“œ, ํ”„๋กœํผํ‹ฐ ๊ฐ™์€ ๋ฉค๋ฒ„๋“ค) ํŒŒ์ƒ ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋‚ด๋ถ€์ ์œผ๋กœ ๊ธฐ๋ฐ˜ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ๋จผ์ € ํ˜ธ์ถœํ•œ ๋’ค์— ์ž์‹ ์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , ๊ฐ์ฒด๊ฐ€ ์†Œ๋ฉธ๋  ๋•Œ๋Š” ๋ฐ˜๋Œ€์˜ ์ˆœ์„œ๋กœ(ํŒŒ์ƒํด๋ž˜์Šค -> ๊ธฐ๋ฐ˜ ํด๋ž˜์Šค)์ข…๋ฃŒ์ž๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. : ๊ธฐ๋ฐ˜ ํด๋ž˜์Šค ๋จผ์ € ์ƒ์„ฑ๋˜๊ณ  ๋งˆ์ง€๋ง‰๊นŒ์ง€ ๋ฒ„ํ‹ฐ๋‹ค ๊ฐ€์žฅ ๋‚˜์ค‘์— ์ข…๋ฃŒ์ž ํ˜ธ์ถœํ•จ! ๋งŒ์•ฝ ๊ธฐ๋ฐ˜ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋„๋ก ์„ ์–ธ๋˜์–ด ์žˆ๋‹ค๋ฉด ํŒŒ์ƒ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ๊ธฐ๋ฐ˜ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž์—๋Š” ์–ด๋–ป๊ฒŒ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์„๊นŒ. ์ด๋Ÿด ๋•Œ base ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. this ํ‚ค์›Œ๋“œ๊ฐ€ "์ž๊ธฐ ์ž์‹ "์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค๋ฉด base๋Š” "๊ธฐ๋ฐ˜ ํด๋ž˜์Šค"๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. this๋ฅผ ํ†ตํ•ด ์ž๊ธฐ ์ž์‹ ์˜ ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ..

    22. ์€๋‹‰์„ฑ, ์ ‘๊ทผ ํ•œ์ •์ž

    ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ 3๋Œ€ ํŠน์„ฑ : ์€๋‹‰์„ฑ, ์ƒ์†์„ฑ, ๋‹คํ˜•์„ฑ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—๋Š” ํด๋ž˜์Šค์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•„์š”ํ•œ ์ตœ์†Œ์˜ ๊ธฐ๋Šฅ๋งŒ ๋…ธ์ถœํ•˜๊ณ  ๋‚ด๋ถ€๋ฅผ ๊ฐ์ถœ ๊ฒƒ์„ ์š”๊ตฌํ•œ๋‹ค. ์ด๊ฒƒ์„ ์€๋‹‰์„ฑ์ด๋ผ๊ณ  ํ•œ๋‹ค. ํด๋ž˜์Šค์— ์„ ์–ธ๋˜์–ด ์žˆ๋Š” ํ•„๋“œ์™€ ๋ฉ”์†Œ๋“œ ์ค‘ ์–ด๋–ค ๊ฒƒ๋“ค์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœํ•  ๊ฒƒ์ด ์žˆ๋Š”๊ฐ€ ํ•˜๋ฉด ์ ˆ๋Œ€๋กœ ๋…ธ์ถœ์‹œํ‚ค์ง€ ๋ง์•„์•ผ ํ•˜๋Š” ๊ฒƒ๋“ค๋„ ์žˆ๋‹ค. ์ ‘๊ทผ ํ•œ์ •์ž๋Š” ๊ฐ์ถ”๊ณ  ์‹ถ์€ ๊ฒƒ์€ ๊ฐ์ถ”๊ณ , ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์€ ๊ฒƒ์€ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋ฅผ ์ˆ˜์‹ํ•˜๋ฉฐ ํ•„๋“œ, ๋ฉ”์†Œ๋“œ๋ฅผ ๋น„๋กฏํ•ด ํ”„๋กœํผํ‹ฐ ๋“ฑ ๋ชจ๋“  ์š”์†Œ์— ๋Œ€ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. C#์—์„œ ์ œ๊ณตํ•˜๋Š” ์ ‘๊ทผ ํ•œ์ •์ž๋Š” ๋ชจ๋‘ ์—ฌ์„ฏ๊ฐ€์ง€๋กœ, ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ ‘๊ทผ ํ•œ์ •์ž ์„ค๋ช… public ํด๋ž˜์Šค ๋‚ด๋ถ€/์™ธ๋ถ€ ๋ชจ๋“  ๊ณณ์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. protected ํด๋ž˜์Šค์˜ ์™ธ๋ถ€์—์„œ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†์ง€๋งŒ, ํŒŒ์ƒ ํด๋ž˜์Šค์—์„œ๋Š” ์ ‘๊ทผ..

    21. this, this() ์ƒ์„ฑ์ž

    "๋‚˜", "์ €๋Š”" ... ์ž๊ธฐ ์ž์‹ ์„ ์ง€์นญํ•  ๋•Œ "๋‚˜"๋ผ๊ณ  ํ•œ๋‹ค. this๋Š” ๊ฐ์ฒด๊ฐ€ ์ž์‹ ์„ ์ง€์นญํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ, ๊ฐ์ฒด ์™ธ๋ถ€์—์„œ๋Š” ๊ฐ์ฒด์˜ ํ•„๋“œ๋‚˜ ๋ฉ”์†Œ๋“œ์— ์ ‘๊ทผํ•  ๋•Œ ๊ฐ์ฒด์˜ ์ด๋ฆ„(๋ณ€์ˆ˜ ๋˜๋Š” ์‹๋ณ„์ž)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ๊ฐ์ฒด ๋‚ด๋ถ€์—์„œ๋Š” ์ž์‹ ์˜ ํ•„๋“œ๋‚˜ ๋ฉ”์†Œ๋“œ์— ์ ‘๊ทผํ•  ๋•Œ this ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. this๊ฐ€ ๊ฐ์ฒด ์ž์‹ ์„ ์ง€์นญํ•˜๋Š” ํ‚ค์›Œ๋“œ์ธ ๊ฒƒ์ฒ˜๋Ÿผ, this()๋Š” ์ž๊ธฐ ์ž์‹ ์˜ ์ƒ์„ฑ์ž๋ฅผ ์นด๋ฆฌํ‚จ๋‹ค. this()๋Š” ์ƒ์„ฑ์ž์—์„œ๋งŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. using System; using System.Collections; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using ..

    20. ์–•์€ ๋ณต์‚ฌ(Shallow Copy)์™€ ๊นŠ์€ ๋ณต์‚ฌ(Deep Copy)

    ํด๋ž˜์Šค๋Š” ํƒœ์ƒ์ด ์ฐธ์กฐ ํ˜•์‹์ด๋‹ค. ์ฐธ์กฐ ํ˜•์‹์€ ํž™ ์˜์—ญ์— ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•˜๊ณ , ์Šคํƒ์— ์žˆ๋Š” ์ฐธ์กฐ๊ฐ€ ํž™ ์˜์—ญ์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. using System; using System.Collections; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using static System.Console; namespace UsingOut { class MyClass { public int MyField1; public int MyField2; } class MainApp { static void Main(string[] arg..

    19. [static]์ •์  ํ•„๋“œ์™€ ์ •์  ๋ฉ”์†Œ๋“œ

    19. [static]์ •์  ํ•„๋“œ์™€ ์ •์  ๋ฉ”์†Œ๋“œ

    static์€ ์‚ฌ์ „์ ์œผ๋กœ '์ •์ '์ด๋ผ๋Š” ๋œป์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.(์›€์ง์ด์ง€ ์•Š๋Š”๋‹ค.) C#์—์„œ static์€ ๋ฉ”์†Œ๋“œ๋‚˜ ํ•„๋“œ๊ฐ€ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹Œ ํด๋ž˜์Šค ์ž์ฒด์— ์†Œ์†๋˜๋„๋ก ์ง€์ •ํ•˜๋Š” ํ•œ์ •์ž์ด๋‹ค. ํ•œ ํ”„๋กœ๊ทธ๋žจ ์•ˆ์—์„œ ์ธ์Šคํ„ด์Šค๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์œผ๋‚˜ ํด๋ž˜์Šค๋Š” ๋‹จ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•œ๋‹ค. ๋˜‘๊ฐ™์€ ํด๋ž˜์Šค๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ ์กด์žฌํ•  ์ˆ˜๋Š” ์—†๋‹ค. ์–ด๋–ค ํ•„๋“œ๊ฐ€ ํด๋ž˜์Šค์— ์†Œ์†๋œ๋‹ค๋Š” ๊ฒƒ์€ ๊ณง ๊ทธ ํ•„๋“œ๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด์—์„œ ์œ ์ผํ•˜๊ฒŒ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๋‹ค์Œ ํ‘œ๋Š” ํ•„๋“œ(ํด๋ž˜์Šค ์•ˆ์— ์„ ์–ธํ•œ ๋ณ€์ˆ˜)๊ฐ€ ์ธ์Šคํ„ด์Šค์— ์†Œ์†๋œ ๊ฒฝ์šฐ์™€ ํด๋ž˜์Šค์— ์†Œ์†๋œ ๊ฒฝ์šฐ์˜ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค. static์œผ๋กœ ํ•œ์ •ํ•˜์ง€ ์•Š์€ ํ•„๋“œ๋Š” ์ž๋™์œผ๋กœ ์ธ์Šคํ„ด์Šค์— ์†Œ์†๋˜๋ฉฐ, static์œผ๋กœ ํ•œ์ •ํ•œ ํ•„๋“œ๋Š” ํด๋ž˜์Šค์— ์†Œ์†๋œ๋‹ค. ์ •์  ํ•„๋“œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์–ป๋Š” ์ด๋“: stati..

    18. ๊ฐ์ฒด์˜ ์‚ถ๊ณผ ์ฃฝ์Œ(์ƒ์„ฑ์ž,์ข…๋ฃŒ์ž) + ์ƒ์„ฑ์ž ์˜ค๋ฒ„๋กœ๋”ฉ

    ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋Š” ์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ๋˜๊ณ  ์†Œ๋ฉธํ•  ๋•Œ๋Š” ์ข…๋ฃŒ์ž๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค. ์ƒ์„ฑ์ž๋Š” ํด๋ž˜์Šค์™€ ์ด๋ฆ„์ด ๊ฐ™๊ณ  ๋ฐ˜ํ™˜ ํ˜•์‹์ด ์—†๋‹ค. ์ƒ์„ฑ์ž์˜ ์ž„๋ฌด๋Š” ํ•ด๋‹น ํ˜•์‹(ํด๋ž˜์Šค)์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ ๋ฟ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. using System; using System.Collections; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using static System.Console; namespace UsingOut { class Cat { public Cat() { } } class MainApp { static void Main(strin..