> 백엔드 개발 > C++ > 수집 회복 메소드가 C#에서 NULL 또는 빈 컬렉션을 반환해야합니까?

수집 회복 메소드가 C#에서 NULL 또는 빈 컬렉션을 반환해야합니까?

Patricia Arquette
풀어 주다: 2025-01-25 15:06:11
원래의
852명이 탐색했습니다.

Should Collection-Returning Methods Return Null or an Empty Collection in C#?

C# 컬렉션 반환 값: null 또는 빈 컬렉션을 반환합니까?

컬렉션을 반환하는 메서드를 작성할 때 종종 문제에 직면합니다. null을 반환해야 할까요, 아니면 빈 컬렉션을 반환해야 할까요? C#에서는 항상 후자를 반환하는 것이 가장 좋습니다.

null을 반환하면 잠재적인 문제가 발생할 수 있습니다. 이 컬렉션을 사용하는 코드에서는 null 검사 및 예외가 발생하여 예기치 않은 동작이 발생할 수 있습니다. 다음 예를 고려해보세요.

<code class="language-csharp">if (myInstance.CollectionProperty != null) {
    foreach (var item in myInstance.CollectionProperty) {
        /* 此处可能出现问题 */
    }
}</code>
로그인 후 복사

이러한 문제를 방지하려면 항상 빈 컬렉션을 반환하세요. 이렇게 하면 코드가 내용에 관계없이 컬렉션을 안전하게 처리할 수 있습니다.

속성의 경우 한 번 설정한 다음 변경하지 않고 그대로 두는 것이 가장 좋습니다. 다음 패턴을 사용하세요:

<code class="language-csharp">public List<foo> Foos { get; private set; }

public Bar() { Foos = new List<foo>(); }</code>
로그인 후 복사

.NET 4.6.1에서는 다음과 같이 단순화할 수 있습니다.

<code class="language-csharp">public List<foo> Foos { get; } = new List<foo>();</code>
로그인 후 복사

열거 가능 유형을 반환하는 메서드의 경우 null 대신 빈 열거 가능 유형을 쉽게 반환할 수 있습니다.

<code class="language-csharp">public IEnumerable<foo> GetMyFoos()
{
    return InnerGetFoos() ?? Enumerable.Empty<foo>();
}</code>
로그인 후 복사

Enumerable.Empty<T>()을 사용하는 것이 명시적으로 생성된 빈 컬렉션이나 배열을 반환하는 것보다 더 효율적입니다.

위 내용은 수집 회복 메소드가 C#에서 NULL 또는 빈 컬렉션을 반환해야합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿