๋ถˆ๊ฐ€๋Šฅํ• ๊นŒ??



Animal ํด๋ž˜์Šค ํ•˜์œ„์— Cat, Dog ํด๋ž˜์Šค๊ฐ€ ์žˆ๊ณ , ์—ฌ๊ธฐ์— ์žˆ๋Š” ์ƒ์†ํ•จ์ˆ˜ Eat์„ ๋ฐ˜๋ณต๋ฌธ ๋“ฑ์œผ๋กœ ์ผ๊ด„์‹คํ–‰ํ•˜๊ณ  ์‹ถ์€ ์ƒํ™ฉ์ž„


IEnumerable<Task> tasks = animals.Select(animal => animal.Eat());


์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด Eat์ด Cat, Dog์˜ Eat๊ฐ€ ์•„๋‹Œ Animal์—์„œ ๊ฐ€์ƒํ•จ์ˆ˜๋กœ ์ •์˜ํ•œ Eat์ด ์‹คํ–‰๋จ.





1. ๊ทผ๋ณธ์ ์ธ ์›์ธ์€ animals ๋ฆฌ์ŠคํŠธ์— ์ž์‹ ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ์ง‘์–ด๋„ฃ์„๋•Œ ๋ถ€๋ชจ ํด๋ž˜์Šค์ธ Animal๋กœ ํ•œ๋ฒˆ ์บ์ŠคํŒ…ํ•ด์„œ ๋„ฃ์€๊ฒŒ ์›์ธ์œผ๋กœ ์ถ”์ •๋จ


๋‹ค๋งŒ ์—ฌ๋Ÿฌ ํด๋ž˜์Šค๋ฅผ ํ•œ ๋ฆฌ์ŠคํŠธ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ๋ฐ˜๋ณต์ž ํ•˜๋‚˜๋กœ ๋Œ๋ฆฌ๋ ค๋ฉด ์–ด์ฉ” ์ˆ˜๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š”๋ฐ. ์ด ๋ถ€๋ถ„์— ์•„์ด๋””์–ด๊ฐ€ ์žˆ์„๊นŒ?




2. ํ•จ์ˆ˜๋ฅผ ์ˆœ์ˆ˜ ๊ฐ€์ƒํ•จ์ˆ˜(์ถ”์ƒํ•จ์ˆ˜)๋กœ ๋งŒ๋“ค ๊ฒฝ์šฐ


์ด๋Ÿด๊ฒฝ์šฐ ๋ถ€๋ชจ์˜ ํ•จ์ˆ˜ ์ •์˜๋ถ€ ์ž์ฒด๊ฐ€ ๋น„์–ด์žˆ๊ฒŒ ๋˜๋‹ˆ ์ž์‹ํด๋ž˜์Šค์˜ ํ•จ์ˆ˜๋ฅผ ์ฐพ์•„์„œ ์‹คํ–‰ํ•˜๋Š”๊ฒƒ ๊ฐ™๊ธด ํ•œ๋ฐ


๊ฐ ์ž์‹ ํด๋ž˜์Šค์—์„œ์˜ ์žฌ์ •์˜๊ฐ€ ๊ฐ•์ œ๋˜๊ณ  ๋งŒ์•ฝ Animalํด๋ž˜์Šค์—์„œ ๊ธฐ๋ณธ๋™์ž‘์„ ์ •์˜ํ•˜๊ณ  ์‹ถ์–ด๋„ ํ•  ์ˆ˜๊ฐ€ ์—†์Œ (์‚ฌ์‹ค ๋…ผ๋ฆฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๋ฉด ํ•  ์ˆ˜๋Š” ์žˆ์Œ)


๋‹ค๋งŒ ์žฌ์ •์˜๊ฐ€ ๋งค์šฐ ๋“œ๋ฌผ๊ฒŒ ์ผ์–ด๋‚˜๋Š” ์„ค๊ณ„์ƒ ํ•จ์ˆ˜๋ฅผ ์ถ”์ƒํ•จ์ˆ˜๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์ง€๋Š” ์•Š์Œ.