Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 리스트에서 요소를 찾지 못할 때 기본값 표시하는 방법

C#에서 빈 리스트를 다룰 때 요소를 조회하려고 하면 예외가 발생할 수 있습니다. 이런 상황에서 오류 없이 안전하게 기본값을 얻으려면 FirstOrDefault() 메서드를 사용하는 것이 좋습니다.

빈 리스트 생성

먼저 요소가 하나도 없는 리스트를 만들어 보겠습니다.

List<float> val = new List<float> { };

FirstOrDefault()로 기본값 가져오기

리스트에 요소가 존재하지 않으면 FirstOrDefault()는 해당 타입의 기본값을 반환합니다. float 타입의 경우 기본값은 0입니다.

val.AsQueryable().FirstOrDefault();

필요하다면 반환된 기본값을 원하는 값으로 변경할 수도 있습니다.

전체 예제 코드

using System;
using System.Collections.Generic;
using System.Linq;

class Demo {
   static void Main() {
      List<float> val = new List<float>{ };
      float a = val.AsQueryable().FirstOrDefault();
      Console.WriteLine("Default Value = "+a);
      if (a == 0.0f) {
         a = 0.1f;
      }
      Console.WriteLine("Default Float value updated = "+a);
   }
}

실행 결과

Default Value = 0
Default Float value updated = 0.1

동작 방식 설명

위 코드의 흐름을 살펴보면 다음과 같습니다.

1. 요소가 없는 float 타입의 리스트를 생성합니다.
2. AsQueryable()로 리스트를 쿼리 가능한 형태로 변환한 뒤 FirstOrDefault()를 호출합니다.
3. 리스트가 비어 있으므로 float의 기본값인 0이 반환됩니다.
4. 반환된 값이 0.0f이면 조건문을 통해 0.1f로 변경하여 출력합니다.

이처럼 FirstOrDefault()를 사용하면 빈 컬렉션에서 발생할 수 있는 InvalidOperationException 같은 런타임 오류를 방지하면서 안전하게 기본값을 처리할 수 있습니다. 참고로 LINQ의 First() 메서드는 빈 시퀀스에서 예외를 던지지만, FirstOrDefault()는 예외 대신 타입별 기본값(참조형은 null, 값형은 0 등)을 반환한다는 점이 핵심 차이입니다.