๊ฐํ๊ณผ ์ฐธ์กฐํ์ ์๋ก ๋ค๋ฅธ ํน์ง์ ๊ฐ๊ณ ์๋ค.
๊ฐํ๊ณผ ์ฐธ์กฐํ์ ํน์ง์ ํ์ด ์ค๋ช ํ์๋ฉด ์๋ณธ vs ๋ณต์ฌ๋ณธ์ ์ฐจ์ด์ด๋ค.
๊ฐํ - ๋ณต์ฌ๋ณธ
์ฐธ์กฐํ - ์๋ณธ
๊ฐํ(Value Type)
๊ฐํ์ ๋ณต์ฌ๋ณธ์ ์ ๋ฌํ๋ค.
int a = 100;
int b = a;
b += 50;
Console.WritLine($"a: {a}");
Console.WritLine($"b: {b}");
์์ ๊ฐ์ ์ฝ๋์์ ์ ์ํ ๋ฐ์ดํฐ์ธ b์ a๋ฅผ ๋์ ํ์์ ๋ b์๋ a์ ๋ณต์ฌ๋ณธ์ด ๋ค์ด์ค๊ฒ ๋๋ค.
๋ค์ ๋งํด ๊ฐํ์ ํ ๋ณ์๋ฅผ ๋ค๋ฅธ ๋ณ์์ ๋์ ํ๋ฉด ๋ณต์ฌ๋ณธ์ ๋ง๋๋ ์๋ฃํ์ด๋ค. ํจ์ ๋งค๊ฐ๋ณ์์ ์ธ์๋ก ์ ๋ฌํด๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
์ฆ, ๋ค๋ฅธ ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝํด๋ ์๋ณธ์ ๋ฐ๋์ง ์๋๋ค.
a์ b๋ฅผ ๊ฐ๊ฐ ์ถ๋ ฅํ๋ฉด
์ด๊ฒ ๋ฌด์จ ๋ง์ฅ๋ ๊ฐ์ ์๋ฆฌ๊ณ ๋น์ฐํ ์๋ฆฌ์ธ๊ฐ ์ถ๊ฒ ์ง๋ง ๋ค์์ ๋ณผ ์ฐธ์กฐํ์์๋ ์ฐจ์ด๊ฐ ๋ฐ์ํ๋ค.(์ฐธ์กฐ-์๋ณธ๋ ๋ฐ๋)
๊ฐํ์ ์ข ๋ฅ:
- ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ
์ ์ํ: byte, sbyte, short, ushort, int, uint, long, ulong
์ค์ํ: float, double, decimal
๋ถ๋ฆฌ์ธ
charํ
- ๊ตฌ์ด์ (Struct)
- enum(์ฌ์ค์ ์ด๋ฆ ๋ถ์ธ ์ ์)
* ์ฐธ๊ณ ๋ก ๋ฌธ์์ดํ์ธ string์ ์ฐธ์กฐํ์ด๋ค!
์ฐธ์กฐํ(Reference Type)
์ฐธ์กฐํ์ ์๋ณธ์ ์ ๋ฌํ๋ค.
string[] a = new string[] { "Hello", "World" };
string[] b = a;
b[1] = "C# is fun!";
Console.WriteLine($"a: {a[1]}");
Console.WriteLine($"b: {b[1]}");
๋ฌธ์์ด ๋ฐฐ์ด์ธ b์ a๋ฅผ ๋์ ํ์์ ๋ b์๋ a์ ์๋ณธ์ด ๋ค์ด์ค๊ฒ ๋๋ค.
์ฐธ์กฐํ์ ํ ๋ณ์๋ฅผ ๋ค๋ฅธ ๋ณ์์ ๋์ ํ๋ฉด ์๋ณธ์ ๋๊ธฐ๋ ์๋ฃํ์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ b์ ๊ฐ์ด ๋ฐ๋๊ฒ ๋๋ฉด ์๋ณธ์ธ a์ ๊ฐ๋ ๋ฐ๋๊ฒ ๋๋ค.
์ฆ, ๋ค๋ฅธ ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ์๋ณธ๋ ํจ๊ป ๋ณ๊ฒฝ๋๋ค.
๋ฐฐ์ด b์ ์์๋ฅผ ๋ฐ๊พธ๋ฉด a์ ์์ ๋ํ ๋ฐ๋๋ค.
์ฐธ์กฐํ์ ์ข ๋ฅ:
- ํด๋์ค
- ๋ฐฐ์ด
- ๋ฌธ์์ด(string)