프로그래밍/(도서)C#코딩의기술-실전

[C#] 코딩의기술(실전편) - 3.13 열거 데이터의 순서 변경

Victory_HA 2022. 3. 31. 22:32

1. 열거 데이터 삭제

  • 열거 데이터에서 삭제를 하는 경우 예외가 발생합니다.
  • 요소의 개수가 변경이 되는 경우 예외가 발생합니다.
static void Main(string[] args)
{
    var list = new List<int> { 1, 2, 3, };
    foreach (var item in list.Where(c=>c>1))
    {
        list.Remove(item);
    }
}

2. 열거 데이터 변경

  • 열거 객체가 변하지 않고 객체 안에 있는 내용만 달라지는 것은 상관없습니다.
  • Where 메서드는 내용을 먼저 읽지 않습니다.
    • 중간에 값이 바뀌더라도 예외 발생하지 않습니다.
static void Main(string[] args) 
{
    int[] array = { 1, 2, 3};
    foreach (var item in array.Where(c=>c>1))
    {
        Console.WriteLine(item);
        array[2] = 1;
    }
}

3. 정리

  • 컬렉션의 요소 개수가 달라지는 경우에는 예외가 발생합니다.
  • 컬렉션의 요소의 값이 달라지는 경우에는 예외가 발생하지 않을 수 있습니다.
  • 열거 중 중간에 값이 바뀌어도 예외 발생하지 않아도, 처리가 복잡해지기 때문에 지양해야합니다.
  • 컬렉션 변경이 필요한 경우 복사본을 만들어, 열거할 객체, 변경할 객체를 나누어 관리합니다.