struct ๋์ class๋ฅผ ์จ์ผ ํ ๋
๊ฐ๋จํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํํํ ๋ ์ข ์ข struct๋ฅผ ์ฌ์ฉํ๊ณค ํ๋ค. ์ด๋ ํจ์ ์์์ ์ฌ์ฉ๋๋ struct๋ Value ํ์ ์ผ๋ก ์คํ์ ์์ฑ๋๊ณ , class๋ Reference ํ์ ์ผ๋ก ์ธ์คํด์ค๊ฐ ํ์ ์์ฑ๋๋ค. ์ด๋ฌํ ๊ตฌ์กฐ์ ์ธ ์ฐจ์ด๋ ๋๋ก ๋ฒ๊ทธ๋ฅผ ๋ฐ์์ํค๊ณค ํ๋ค.
์๋์ ๊ฐ์ ์์ ๊ฐ ์๋ค.
struct Employee
{
public string Name { get; set; }
public int Salary { get; set; }
}
class HR
{
public void RaiseSalary(Employee emp)
{
emp.Salary = emp.Salary + 1000;
}
}
Employee emp = new Employee();
emp.Name = "Lee";
emp.Salary = 9000;
HR hr = new HR();
Console.WriteLine(emp.Salary); // ์ธ์ ์
hr.RaiseSalary(emp);
Console.WriteLine(emp.Salary); // ์ธ์ ํ
์ ์์ ์์ ์ธ์ ํ ์์๋๋ ์ถ๋ ฅ ๊ฐ์ 10000์ผ ๊ฒ ๊ฐ์ง๋ง, ์ค์ ์ถ๋ ฅ ๊ฐ์ 9000์ด ๋์จ๋ค.
์ ๊ทธ๋ด๊น?
๋ฌธ์ ๋ Employee๊ฐ struct ๊ตฌ์กฐ์ฒด๋ผ๋ ์ ์ด๋ค. struct๋ Value ํ์ ์ด๋ผ ๋ก์ปฌ ๋ณ์๋ก ์ฌ์ฉ๋๊ฑฐ๋ ํจ์๊ฐ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋ ๋ ์คํ์ ์์ฑ๋๋ค. ์ด๋ ์ ์ฒด struct ๋ฉค๋ฒ๋ค์ ๋ณต์ฌํ์ฌ ์คํ์ ์๋ก์ด ๋ณต์ ๋ณธ์ผ๋ก ์์ฑํ์ฌ ๋ฉ์๋์์ ๋ณต์ ๋ณธ์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋๋ผ๋ ๋ฉ์๋ ๋ฆฌํด ์ ์๋ณธ์ ๊ฐ์๋ ์ํฅ์ ๋ฏธ์น์ง ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ class๋ก ๋ณ๊ฒฝํด์ผ ํ๋ค. ๊ทธ๋ฌ๋ฉด ๋ณต์ ๋ณธ์ผ๋ก ์ ๋ฌ๋์ง ์๊ณ ํ ์์ ์๋ ๊ฐ์ฒด์ ๋ ํผ๋ฐ์ค๋ก ์ ๋ฌ๋๋ฏ๋ก ๋ฉ์๋์์ ๋ณ๊ฒฝํด๋ ๊ฐ์ด ์ ์ง๋๊ฒ ๋๋ค.