์บ์คํ ์์ฃผํ๋ฉด ์ฑ๋ฅํ๋ฝ ์ข ์๋ค๋๋ฐ์์งํ ์ธ๋๊ฒ์์ด๋ฉด ๊ฑฑ์ ์ํด๋ ๋๋์์ค ์๋?
์ผ๋จ ํด๋ณด๊ณ ๋๋ฆฐ๊ฑฐ๊ฐ์ผ๋ฉด ํ๋์ฉ ๋ฐ๊ฟ๋ด ์ ๋ฐ์ดํธ ๋ฃจํ์์์ ์ด ํฉ ๋ช๋ฐฑ๊ฐ์ฉ ์บ์คํ ํ๋๊ฑฐ ์๋๋ฉด ๋ฌธ์ ์์๋ฏ
์ ๋ฐ์ดํธ ๋ฃจํ์์๋ ์์ฐ๊ณ ๊ทธ๋ฅ ์ด๋ฒคํธ ์ ์ฉ ํจ์์๋ง ์ธ๊ฑฐ์
ใฑใ ์๋ฏ ๋์ค์ ์ธํฐํ์ด์ค๋ก ๋ถ๋ฆฌํ ์ ์๊ฒ ์ผ๋๋ง ํด๋๊ณ ์ค๊ณํ๋ฉด ์ข์๋ฏ
๋ฌด์จ ์ํฉ์ด๊ธธ๋ object๊ฐ ํ์ํ๊ฑฐ์
๋ญ ๊ทผ๋ฐ ์จ์ผ ํ๋ ์ํฉ์ด๋ฉด ์จ์ผ์ง ๋น์ฅ ์ฌ๊ธฐ ์ ๋ค ๋ด๋ถ์ ์ผ๋ก object๋ก ๋ฐ๋๊ฑฐ์ธ์ค๋ ๋ชจ๋ฅด๊ณ ์ฐ๋๊ฑฐ ๋ง์๊ฑธ
๋ด๋ถ์ ์ผ๋ก object ๋ฐ๋๋ค๋๊ฒ ๋ฌด์จ๋ป์?
๊ทธ๋ฅ ์ธ์ด ๊ณต๋ถ ์ํ๊ณ ์ ๋ํฐ๋ง ํ๋ ์ฌ๋๋ค ์ฝ๋ ๋ณด๋ฉด object ํ์ ์ผ๋ก ๋์ด๊ฐ๊ฒ๋ ์ฝ๋ ์ง๋ ์ฌ๋๋ค ์์
์๊ธฐ๊ฐ ๋ง๋ ๊ฑฐ ๋ง๊ณ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ธ์ด ์์ฒด์ ํน์ฑ๋๋ฌธ์
๊ฐ๋จํ ์์ ํ๋ ๋ค์ด์ฃผ๋ฉด List ์์ ํธ์ถ๋๋ Remove๋, ๋ด๋ถ์์ Equals๊ฐ ํธ์ถ๋๋๋ฐ, ์ด ๋ ์ธ์๊ฐ object๋ผ ๋ฆฌ์คํธ์์ ๋ญ ๋บ ๋ ๋ง๋ค ๋ฐ์ฑ์ธ๋ฐ์ฑ ๋์ด
List.Remove(T item) ํจ์๋ ์์ ์์ ๋ฒ์ ์๋ ๊ฒฝ์ฐ์ EqualityComparer์์ ๋ฐ์ฑ ์ํ ํ ๋ฐ ๋ฒ์ ์ด ์ธ์ ๊ป์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋ด๋ถ์ ์ผ๋ก EqualityComparer.Default.IndexOf ์ด๋ฐ์์ผ๋ก ๋์ํ ๊ฑธ?
์ ๋ฐ๋์๋? ๊ฝค ์ต๊ทผ๊น์ง๋ ์ฌ์ ํ object.Equals ํ๋ ๊ฑธ๋ก ์๊ณ ์์๋๋ฐ
https://source.dot.net/#System.Private.CoreLib/List.cs,db8cdd552a0bb10c
.NET Core ๊น์ง ์๊ฐ๊ณ .NET Framework ์ชฝ๋ง ๋ด๋ ์ ๋ค๋ฆญ๋ฒ์ List ๋ ๋ฌธ์ ์์ด๋ณด์ด๋๋ฐ
EqualityComparer.Default.IndexOf ๋ ํ๊ณ ๋ค์ด๊ฐ๋ฉด object.Equals ๊ตฌ๋ง
์๋ ์์ค ๋ณด๊ณ ๋ ๋ชจ๋ฆ ์ ๋ค๋ฆญ ๋ฒ์ EqualityComparer์ธ๋ฐ?
์ ๋ํฐ ์์ ๋ฒ์ ์์ Enum ์ Dictionary Key๋ก ์ฌ์ฉํ์๋ ๋ฐ์ฑ์ผ์ด๋๋ค๋๊ฑด ๋ดค์ด๋ List Remove ๋ฉ์๋๋ ๋ชป๋ค์ด๋ดค๋๋ฐ
https://source.dot.net/#System.Private.CoreLib/EqualityComparer.cs,0a059518e815968d
์ ๋ค๋ฆญ์ผ๋ก ๋ฐ์์ ๋ ๋ฐ์ฑํ๋๊ฑธ๋ก ๋ณด์ด๋๋ฐ
GenericEqualityComparer ์ ๊ตฌํ๋ถ๋ฅผ ๋ณด๋ฉด ๊ฐ์ฒด์ IEquatable T ๋ฅผ ์ด์ฉํด์ ๋น๊ตํ๋๋ฐ
์์๊ตฌ์กฐ๋ก ๋ฐ์ ๊ฐ ํด๋์ค๊ฐ์์
๋ ผ์ ๋ค๋ฆญ ์ธํฐํ์ด์ค IEquatable ์ ๋ฐ์ฑ์ด ์ผ์ด๋๋๊ฒ ๋ง๋๋ฐ ํธ์ถ ํ๊ณ ๋ค์ด๊ฐ๋ฉด IEquatable T ๋ก ๊ฐ
์ ๊ทธ๋ฌ๋ค ใ ใ ใ ใ ๋ฐ์ ์์๊ตฌ๋; IEquatable ๊ตฌํํ ์ ๋ค ์ดํด๋ณด๊ณ ์๋๋ฐ ๊ฒฐ๊ตญ == ์ค๋ฒ๋ก๋ฉ ํ๋๊ฑฐ๋ ์๋๋ ๊ฐ์๊ฒ ์ฝ๊ฐ ์๊ธฐ๊ธด ํ๋ฐ ๋๊ณ ๋์์ ์์ ํ๊ธด ํ๊ตฌ๋
๋๋ถ์ ์ ๋ณด ์ต์ ํ๋จ ใณใณ
๊ตฟ
๋ฐ์ฑ/์ธ๋ฐ์ฑ ๊ฐ๋ ์๋ ์ํ์์ ๋งค ๋ฃจํ ํจ์๊ฐ์๊ฒ๋ง ์๋๋ฉด ๋ฌธ์ ์์ง
ในใ ๊ฐํ์ ์ ๋ฐ์ดํธ์์ ๋ฐ๋์๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ด์ด๋ น์๋ฏ
๊ฐ์ธ์ ์ผ๋ก๋ ๊ตฌ์กฐ ์ค๊ณ ์ ์ง์ง ํธํด์ง๋ค ํ ๋๋ง ์ ํฌ์ฅํด์ ์ ๊ทผ ๋ง์๋๊ณ ์ฐ๊ธด ํ๋๋ฐ
๋ฒจ๋ฅ๋ ๋ ํผ๋ฐ์ค์ ๋ํด ์ ์ดํดํ๊ณ ์๊ณ ์บ์คํ ์ ์ถฉ๋ถํ ์กฐ์ฌํด์ ์ฐ๋ฉด ๋ฌธ์ ๋ ์์