C#

[C#] List ํด๋ž˜์Šค Remove() ์ด์Šˆ

 

๐Ÿ˜„ List ํด๋ž˜์Šค ์‚ฌ์šฉ ์ค‘ ์š”์†Œ ์ œ๊ฑฐ ์ค‘ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฌ์šด ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

C#์˜ List ํด๋ž˜์Šค์—๋Š” ์•„์ดํ…œ์„ ์ œ๊ฑฐํ•˜๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ Remove, RemoveAt๋กœ 2๊ฐœ ์กด์žฌํ•œ๋‹ค.

 

Remove(obejct element) ํŠน์ • ์š”์†Œ๋ฅผ ๋ฆฌ์ŠคํŠธ์—์„œ ์ œ๊ฑฐ ( ๊ฐ์ฒด ์ง€์ • )
RemoveAt(int index) ํŠน์ • ์œ„์น˜์˜ ์š”์†Œ๋ฅผ ๋ฆฌ์ŠคํŠธ์—์„œ ์ œ๊ฑฐ ( ์ธ๋ฑ์Šค ์ง€์ • )

 

์ด ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉฐ Remove ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด,

class Game
    {
        public string name; // ๊ฒŒ์ž„ ์ด๋ฆ„
        public int favorite // ๋‚˜์˜ ์„ ํ˜ธ๋„
    }
    class Program
    {
        static void Main(string[] args)
        {
            List<Game> list = new List<Game>();
            list.Add(new Game() { name = "๋ฉ”์ดํ”Œ์Šคํ† ๋ฆฌ", favorite = 1});
            list.Add(new Game() { name = "FIFA4", favorite = 2});
            list.Add(new Game() { name = "์นดํŠธ๋ผ์ด๋”", favorite = 3});
            list.Add(new Game() { name = "๋˜์ „์•คํŒŒ์ดํ„ฐ", favorite = 4});
            list.Add(new Game() { name = "๋งˆ๋น„๋…ธ๊ธฐ", favorite = 5});
            list.Add(new Game() { name = "ํฌ๋ ˆ์ด์ง€์•„์ผ€์ด๋“œ", favorite = 6});

            foreach (var item in list)
            {
                if (item.favorite > 1)
                {
                    list.Remove(item);
                }
            } // ์—๋Ÿฌ ๋ฐœ์ƒ?
        }
    }

* System.InvalidOperationException ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

๐Ÿง ์™œ ๋ฐœ์ƒํ• ๊นŒ?

 

์š”์†Œ๊ฐ€ ํ•˜๋‚˜ ์ œ๊ฑฐ๋˜๋ฉด์„œ ์ธ๋ฑ์Šค๊ฐ€ ์•ž์œผ๋กœ ํ•˜๋‚˜์”ฉ ๋ฐ€๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์•„๋ž˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด for๋ฌธ์˜ ์ธ๋ฑ์Šค๋Š” ์ˆœ์„œ๋Œ€๋กœ ๋Œ๊ณ  ์žˆ๋Š” ๋ฐ˜๋ฉด์— List์˜ ์š”์†Œ๋“ค์„ ์ œ๊ฑฐ๋œ ์š”์†Œ์˜ ์ž๋ฆฌ์— ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๐Ÿง ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„๊นŒ?

๋ณดํ†ต C#์—์„œ๋Š” for๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํฌ๊ฒŒ for๋ฌธ, ์—ญ for๋ฌธ, forEach๋ฌธ์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜ for๋ฌธ๊ณผ forEach๋ฌธ์€ ์•ž์„œ ๋งํ•œ ์—๋Ÿฌ๊ฐ€ ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์—

์—ญ for๋ฌธ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์™œ?

์—ญ for๋ฌธ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ํ•ด๋‹น ์ธ๋ฑ์Šค๊ฐ€ ์ œ๊ฑฐ๋˜๋”๋ผ๋„ ๋‚จ์•„์žˆ๋Š” ๋ถ€๋ถ„์˜ ๊ฐ’๋“ค์˜ ๋ณ€๊ฒฝ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

โ€ป ์—ญ for๋ฌธ์ด๋ž€ ์‰ฝ๊ฒŒ ๋งํ•ด for๋ฌธ์˜ ์ธ๋ฑ์Šค ์ˆœ์„œ๋ฅผ List์˜ ๋์—์„œ๋ถ€ํ„ฐ ์—ญ์ˆœ์œผ๋กœ ๋ฐ˜๋ณตํ•ด์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์•„๋ž˜์™€ ๊ฐ™์ด ์—ญ for๋ฌธ์„ ์‚ฌ์šฉํ•ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๊ณ  ์ž˜ ๋™์ž‘์ด ๋œ๋‹ค.

for (int i = list.Count - 1; i >= 0; i--)
{
    if (list[i].favorite > 1)
    {
        list.RemoveAt(i);
    }
}

 

๊ถ๊ธˆํ•˜์‹  ๊ฒƒ์ด ์žˆ๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ๊ฒŒ ์žˆ์œผ๋ฉด ์–ธ์ œ๋“ ์ง€ ๋Œ“๊ธ€ ๋‹ฌ์•„์ฃผ์„ธ์š”!

 

๋ฐ˜์‘ํ˜•