์ ๋ํฐ ๋ฐฐ์์ ๊ฒ์๋ง๋ค์ด๋ณด๊ณ ์ถ์๋ฐ
์ ๋ํฐ๋ C#์ ์ฐ๊ณ C#๋ฐฐ์ฐ๊ธฐ์ ์์ C์ธ์ด๋ฅผ ๋ฐฐ์ฐ๋ฉด ์ข๋ค๊ณ ํด์
C์ธ์ด๋ฅผ ๋ ํํ๊ณ ์๋ ๋จ๊ณ์ ๋๋ค C#์ ์์๋ ์ ํ๊ณ ์
์ง๊ธ ํฌ์ธํฐ ์ฑํฐ ๋ค์ด์ฐ๋๋ฐ
๊ฐ๋ ์ ์๋ฒฝํ ์ดํด๋๋๋ฐ ํ์ฉํ ์์ ์ค์ต๋ณด๋ฉด ์ด์ง๋ฝ๋ค์
๊ฐ๋ ๋ง ์ฐ๋จนํ๊ณ ๋์ด๊ฐ๋ ๋ ์ง
์๋๋ฉด ๊ฒ์๋ง๋ค๋ ํ์๋ก ํ์ํด์ ๋ง์คํฐ๊ฐ ํ์ํ์ง ๊ถ๊ธํฉ๋๋ค
๋ณธ์ ์ด ์์ด์ ๊ฐ๋ฐ์๋ ์๊ฐ์ ์๊ณ ์ทจ๋ฏธ๋ก ์ ๋ํฐ ํ์ฉํด ๊ฒ๋ง๋ค์ ๋๋ก๋ง ์ธ์ด๋ฅผ ๋ฐฐ์ฐ๊ณ ์ถ์๋ฐ
C์ธ์ด์ ํฌ์ธํฐ๋ฅผ ๊น๊ฒ ๋ง์คํฐํด์ผ๋ ๊น์
์ ๋ํฐ๋ C#์ ์ฐ๊ณ C#๋ฐฐ์ฐ๊ธฐ์ ์์ C์ธ์ด๋ฅผ ๋ฐฐ์ฐ๋ฉด ์ข๋ค๊ณ ํด์
C์ธ์ด๋ฅผ ๋ ํํ๊ณ ์๋ ๋จ๊ณ์ ๋๋ค C#์ ์์๋ ์ ํ๊ณ ์
์ง๊ธ ํฌ์ธํฐ ์ฑํฐ ๋ค์ด์ฐ๋๋ฐ
๊ฐ๋ ์ ์๋ฒฝํ ์ดํด๋๋๋ฐ ํ์ฉํ ์์ ์ค์ต๋ณด๋ฉด ์ด์ง๋ฝ๋ค์
๊ฐ๋ ๋ง ์ฐ๋จนํ๊ณ ๋์ด๊ฐ๋ ๋ ์ง
์๋๋ฉด ๊ฒ์๋ง๋ค๋ ํ์๋ก ํ์ํด์ ๋ง์คํฐ๊ฐ ํ์ํ์ง ๊ถ๊ธํฉ๋๋ค
๋ณธ์ ์ด ์์ด์ ๊ฐ๋ฐ์๋ ์๊ฐ์ ์๊ณ ์ทจ๋ฏธ๋ก ์ ๋ํฐ ํ์ฉํด ๊ฒ๋ง๋ค์ ๋๋ก๋ง ์ธ์ด๋ฅผ ๋ฐฐ์ฐ๊ณ ์ถ์๋ฐ
C์ธ์ด์ ํฌ์ธํฐ๋ฅผ ๊น๊ฒ ๋ง์คํฐํด์ผ๋ ๊น์
c#์ ํฌ์ธํฐ ๊ฐ๋ ์ด ์์ต๋๋ค.
unsafe ์ฝ๋๋ก ์ธ์๋ ์๋ค๊ณ ๋ ํ๋๋ฐ, ๋ ์จ๋ณธ์ ์๊ณ , ์ด๋ณด์๋ค์ด ์ฐ๋๊ฒ๋ ์ถ์ฒ ์ํจ.
๊ทธ๋ผ ๊ทธ๋ฅ ์ด๋ฐ๊ฒ ์๊ตฌ๋ ํ๊ณ ๋์ด๊ฐ๋ ๋๋์?
์ ๋ํฐ๋ฅผ ํ ๊ฑฐ๋ฉด ์ด๋ณด์๊ฐ ๊ตณ์ด ํฌ์ธํฐ๊น์ง ๊ณต๋ถํ๋ฉด์ ์์๊บพ์ด๋๊ฑฐ๋ ์ถ์ฒ์ํจ.
๊ฐ์ฌํฉ๋๋ค ์์ ๋ ๋ต์ง ์๋ณด๊ณ ๊ตฌํ์๋ฃํ๊ธด ํ๋๋ฐ ์๋ฒฝํ ๋ง์คํฐํ๋ ค๋ฉด ์์ ์์ญ๊ฐ๋ ํด๋ด์ผํ ๊ฑฐ๊ฐ์์ ์ง๋ฌธํ์ต๋๋ค C์์ ์๊ฐ๋ญ๋น์ฅด์ด๊ณ ์ผ๋ฅธ C#์ผ๋ก ๋์ด๊ฐ์ผ๊ฒ๋ค์
ํ๋ก๊ทธ๋๋ฐ ๊ต์ฅํ ๊ฑด์ ํ ์ทจ๋ฏธ์ํ์ด๋๊น ์ด์ฌํ ํ์ธ์.
ํ๋ ๋ญํ๋๋ง ๋ ์ฌ์ญค๋ด๋ ๋๊ฒ ์ต๋๊น?
์ ๊ฐ c#์ ๋ฌธ๋ ์ ํด์ c๋ ์ด๋ป๊ฒ ๋ค๋ฅด๊ณ ์ด๋ค๊ฒ ์๊ณ ์ด๋ค๊ฒ ์๋์ง(ํฌ์ธํฐ์ฒ๋ผ) c์์ ๊ผญ ์ง๊ณ ๋์ด๊ฐ์ผํ ๊ฒ ์์๊น์?
*์๋์ง ๋ชจ๋ฅด๋๋ฐ
๋ ์ ๋ํฐ๋ฅผ ์ทจ๋ฏธ๋ก ํ๋ฉด์ ๊ตณ์ด C๋ฅผ ํ๋ ค๋ ์ด์ ๋ ๋ชจ๋ฅผ๊ฒ ๋๋์? ๊ทธ๋ฅ c#์ด๋ ํ์ญ์ .
ํฌ์ธํฐ ์์ฒด๊ฐ ์๋๋ผ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ด๋ค์์ผ๋ก ๊ด๋ฆฌ๋๋์ง๋ฅผ ์์์ผํจ
๋๊ฐ ํ๋๊ฑฐ๋ ์ ์ผ ๋น์ทํ๊ฒ ํ๊ตญ์ด ๋ฐฐ์ฐ๋ ค๋ฉด ์ผ๋จ ์ฒ์๋ฌธ ๋ค ์ธ์์ผ ๋๋์? ์ด๋ฌ๋๊ฑฐ๋ ๋น์ทํจ
์ ํ์ ๋ฌธ์ ์ ํ์ง๋ง ๋ c๋ฅผ ๋จผ์ ๊ณต๋ถํ๋๊ฑธ ์ถ์ฒํ๊ณ ์ถ์ java๋ c#์ ๋จผ์ ํ๋ ์น๊ตฌ๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ๊ฐ๋ ์ ์ง๊ด์ ์ผ๋ก ์ดํดํ์ง ๋ชปํ๋๋ผ๊ณ ์ฌ์ค c#์ ๋ ํผ๋ฐ์ค๋ผ๋๊ฒ c์ ํฌ์ธํฐ๋ ๊ฐ์๊ฑฐ๊ฑฐ๋ . ๊ทผ๋ฐ ๊ฐ์ฒด์งํฅ์ธ์ด์ธ c#์ด๋ java์์๋ ์ฃผ๋ก ๋ณ์๋ฅผ ๊ฐ์ฒด๋ฅผ ๋ด๋ ๊ทธ๋ฆ์ด๋ผ๊ณ ์๊ธฐ๋ฅผ ํจ. ํ๋ฆฐ๋ง์ ์๋์ง๋ง ๋ ๊น์ด ์ดํดํ๋๋ฐ์๋ ๋ณ๋ก ์ข์ ์ค๋ช ์ ์๋์ง ์ ํ์ ๋ฌธ์ ์. ์ด์งํผ c#๋ก ์์ํด๋ ๋์ค์ ๊ฐ์๋ ์ปดํจํฐ์ ๋ํ ์ดํด๋ฅผ ์ํด ๊ณผ์ฐ ๋ ํผ๋ฐ์ค๊ฐ ์ปดํจํฐ์์ ๋์ฒด ๋ฌด์์ธ์ง ์ ํ์๊ฐ ์์๋๊ฐ ์. c๋ก ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋จผ์ ๋ค์ง๊ณ ๊ฐ๋๋, c#์ผ๋ก ์ผ๋จ ๋ถ๋ช์น๋ฉด์ ๋ถ์กฑํ๊ฑธ ํ๋์ฉ ์ฑ์๊ฐ๋๋ ๋ณธ์ธ์ด ์ฐ๊ตฌ๊ธฐ์ง์ด ์๋ค๋ฉด ๊ธฐ์ด๋ถํฐ ๋ค์ง๋๊ฑธ ์ถ์ฒํ๊ณ , ๋ญ๊ฐ ๊ฒฐ๊ณผ๋ฅผ๋นจ๋ฆฌ๋ณด๋ฉด์ ์ฑ๊ณผ๋ฅผ ๋๋ ฅ์ผ์ ์์ผ๋ก ๋์๊ฐ๋ค๋ฉด c#๋จผ์ ์ถ์ฒ
๋ค์๋งํ์ง๋ง ๋๋ค ์ฅ๋จ์ ์ด ์์. ์ ๋ ์ด๋์ชฝ์ด ๋ฌด์กฐ๊ฑด ์ณ๋ค๋ผ๋๊ฒ ์๋. ์์ ์๊ฒ ๋ง๋๋ฐฉํฅ์ผ๋ก ๊ฐ๊ธธ ๋ฐ๋
๊ฐ์ฌํฉ๋๋ค
๊ฐ๋ ๋ง ์ ์ดํดํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋๋๊ฑฐ ์ดํดํ๋ฉด C์์ ์ํด๋ ์๊ด์์. ๊ธฐ๋ณธ๋ฌธ๋ฒ์ฑ์ ๋์จ ์์ ๋ ์ด๋๊น์ง๋ ์ดํด๋ฅผ ๋๊ธฐ์ํ ์์ ์ผ๋ฟ์ด์ง ์ค์ Cํ๋ก๊ทธ๋จ์์๋ ๋ง์ด ์ฐ์ง ์์. ๊ฑฐ๊ธฐ ๋๋น๋๋ C# ์ง์์ ๊ฐ์์ํ๋ณต์ฌ, ์ฐธ์กฐ์์ํ๋ณต์ฌ, unsafe์ ref, out ๋ฑ์ธ๋ฐ C๋ก ๊ณต๋ถ์ํด๋๋จ ๋ค๋ง ์ด๋ฐ๊ฑธ ์ ์๋ ค์ฃผ๋ C#์ฑ ์ด ์ผ๋ง ์๋ค๋๊ฒ ๋ฌธ์ ์. C๋ ์ ํต์ด ์ค๋๋๋ค๋ณด๋ ์ข์์ฑ ์์ธํ์ฑ ์ด ๋ง์ ๊ฒ๋ฟ ๊ทธ๋์ ๋์์ด ๋๋ค๋๊ฑฐ์ง. ์ฌ์ค ์ด๋ ต๊ธฐ๋ C์๋ ์๋ ๊ฐ์ฒด์งํฅ๊ณผ ๊ทธ์๋ฐ๋ฅธ ๊ฐ๊ฐ์ง ์์ฉ๊ฐ๋ , ๋์์ดํจํด๋ค์ด ๋ ์ด๋ ต๊ณ ์ค์ํจ.
์ด๋๊น์ง ๊ธฐ์ด(์ ๊ธ์์ค)๋ก ๋ด๋ ค๊ฐ๊ฑฐ๋์ ๋ฌธ์ ์ธ๋ฐ ๋๋์์ C์ธ์ด -> ์ด์ ๋ธ๋ฆฌ/๊ธฐ๊ณ์ด -> ๋์งํธ์ ์๊ณตํ -> ๋ฐ๋์ฒด ๋ฌผ๋ฆฌ ์ด๋๊น์ง ๊ฐ๋? ๋ ์ ๊ฑฐ ๋ค ์ ํด๋ณด๊ณ ํ๋ ๋ง์ด๊ธดํ์ง๋ง ์ธ๊ฐ์ ๋ถ๋ช ํ ๊ทธ ์ ๊บผ ๋ค ๋นผ๊ณ ์๋ ์ดํด๊ฐ๋ฅํ, ์ดํด์ํฌ ์ง๋ฅ์. ๋จ์ง ํ์ํ๊ฑด ๊ฐ์์ค์ ๋ง๋ ์ ์ค๋ช ๋ ์ฑ ๋ฑ์ด ํ์ํ ๋ฟ์ด์ผ.
C๋ฅผ๋จผ์ ํ๋ C#์ ๋จผ์ ํ๋ ๊ทธ๋ฅ ํด. ์ด๋ฐ๊ฑฐ ๋ฐ์ง๋ ์ ๋ค์ด ์ ค ๋๋ ค
Callbyrefenrence๋ callbyvalue๋ง ์์๋ ์ถฉ๋ถ