List<T> myList๊ฐ ์์๋
์ด๊ฒ์ ๊ฒ ํ๋๋ผ myList์ Add๋ฅผ ๋ง์ด ํด์ ์ฌ์ฉํ์.
์ดํ์ ์ด์ myList ์์ ๋ค์ด์๋ ๊ฐ๊ฐ์ธ์ ๊ฐ์ฒด๋ค์ด ํ์๊ฐ ์์ด์ง.
๊ทผ๋ฐ myList์์ฒด๋ ๋ ์๋ก์ด๊ฒ๋ค์ ๋ฃ์ด์ผ๋์ ํ์ํจ.
์ด ์ํฉ์์ ๊ทธ๋ฅย
1๋ฒย myList = new List<T>(); ํ๋๊ฒ๊ณผ
2๋ฒ myList๋ฅผ foreach๋ฌธ ๋๋ ค์ ์์ ์๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ myList.Remove(item) ํด์ ๋ค์ Count 0์ง๋ฆฌ ๋ฆฌ์คํธ ๋ง๋๋๊ฑฐ
๋์ค์ ๋ญ๊ฐ ์ข์๊ฑฐ?
ํธํ๊ฑด ๊ทธ๋ฅ 1๋ฒ์ธ๋ฐ ์ ๋ํฐ GC ์๋๋ฐฉ์์ดย ์๋ฌด๋ ์ฐธ์กฐํ์ง์๋๊ฒ๋ค์ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ์ํจ๋ค๊ณ ์๊ณ ์๋๋ฐ
๊ทธ๋ผ GC๊ฐ ๊ฐ๋ํ๊ธฐ ์ ๊น์ง 1๋ฒ์์ new ํด๋ฒ๋ ค์ ๋์ด์ ์์ฐ๋ ๊ทธ ์ ๋ฆฌ์คํธ๋ ๊ณ์ ์กด์ฌํ์ฑ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋จน๊ณ ์๋๊ฑด๊ฐ ํด์
์๋๋ฉด 2๋ฒ์ผ๋ก ํด๋ดค์ ๊ฐ์์ ๊ฐ์ฒด๋ค์ด ์ด์ฐจํผ Destroy๋๊ฒ ์๋๊ณ ์์ผ ๊ฐ๊ฐ์ธ์ ์ฐธ์กฐ๋ง ์์ค๊ฑฐ๋ผ ๋ฉ๋ชจ๋ฆฌ์ ๋ณ ์ฐจ์ด๊ฐ ์๋?
1๋ฒ๋ณด๋จ Clear๊ฐ ๋ ๋ซ์ง ์๋ ?
ํด๋ฆฌ์ดํ๋๊ฒ 2๋ฒ์์ ์ด๋ ๋๊ฐ์ ๊ฑฐ ๊ฐ์๋ฐ ๊ทธ๋ผ 2๋ฒ์ด ๋์๊ฐ?
์๋ ๋ญ ๊ทธ๋ฅ ๋ฆฌ์คํธ ์๋ก ๋ง๋ค๋ฐ์ Clear๊ฐ ๋ ํธํ์ง ์๋ ๋ผ๋๊ฑฐ์ง foreach๋ฌธ ์ธ ํ์๋ ์๊ณ
๋๋ ๋ ๋ค ์จ, ์น ๋น์ฐ๊ณ ์๋ก ๋ฃ์ด์ผ ํ ๋ ํด๋ฆฌ์ด, ์ธ์ธํ๊ฒ ๊ฐ๋ง ์กฐ์ ํด๋ ๋ ๋ T๋ฅผ ํด๋ ์ค๋ก ๋ฃ์ด์ ๊ทธ ์์๋ค ๊ฐ์ ์กฐ์ ํ๋ ํจ์๋ฅผ ๋ฃ์ด๋
ํ๋ ์๋จ์ํธ์ถ์ด๋ฉด ๋ด๊ฒฝํ์ clear add ํ๋ฉด ๋๋ ค์ง array ์ฐ๊ณ ๋์ length ๊ธธ์ด ๋ฐ๋ก ์ ์ฅํ์
ใ