Program Club

Find () 및 First ()는 예외를 throw합니다. 대신 null을 반환하는 방법은 무엇입니까?

proclub 2020. 11. 29. 12:31
반응형

Find () 및 First ()는 예외를 throw합니다. 대신 null을 반환하는 방법은 무엇입니까?


목록을 검색 할 때 예외를 throw하는 대신 null을 반환하는 linq 람다 검색 메서드가 있습니까?

내 현재 솔루션은 다음과 같습니다. (예외가 발생하지 않도록)

if (list.Exists(x => x.Foo == Foo))
{
    var listItem = list.Find(x => x.Foo == Foo);
}

표현을 반복하는 것은 잘못된 느낌입니다.

뭔가 ...

var listItem = list.Find(x => x.Foo == Foo);
if (listItem != null)
{
    //Do stuff
}

... 기분이 나아졌습니다. 아니면 나뿐입니까?

이것에 대해 더 나은 접근 방식이 있습니까? (솔루션이 null을 반환 할 필요는 없으며 더 나은 솔루션이 좋습니다.)


var listItem = list.FirstOrDefault(x => x.Foo == Foo);
if (listItem != null)
{
    //Do stuff
}

Bala R의 대답이 맞습니다. 정보를 추가하고 싶었습니다.

경우주의 List<T>에 의해 설계 null이 될 수 없습니다 객체를 포함, (가) FirstOrDefault보다 다른 뭔가를 반환합니다 null. 컴파일러는 if 문에서 이에 대한 경고 / 오류를 줄 가능성이 있습니다. 이 경우 다음과 같이 상황에 접근해야합니다.

List<MyObjectThatCannotBeNull> list;
var listItem = list.FirstOrDefault(x => x.Foo == Foo);
if (!listItem.Equals(default(MyObjectThatCannotBeNull)))
{
    //Do stuff
}

참고 URL : https://stackoverflow.com/questions/5613443/find-and-first-throws-exceptions-how-to-return-null-instead

반응형