> 백엔드 개발 > C++ > 유형 매개 변수 T를 사용하여 C# 일반 메서드에서 Null을 안전하게 반환하려면 어떻게 해야 합니까?

유형 매개 변수 T를 사용하여 C# 일반 메서드에서 Null을 안전하게 반환하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2025-01-09 17:26:43
원래의
710명이 탐색했습니다.

How Can I Safely Return Null from a C# Generic Method with a Type Parameter T?

C#의 일반 메서드에서 Null 값 반환

C# 일반 메서드에서는 유형 매개변수가 참조 유형 또는 값 유형일 수 있는 경우 null을 반환하는 것이 항상 간단하지는 않습니다. 이 문제는 반환 유형이 유형 매개변수 T인 경우에 발생합니다.

다음 코드 조각을 고려하세요.

<code class="language-csharp">static T FindThing<T>(IList collection, int id) where T : IThing, new()
{
    foreach (T thing in collection)
    {
        if (thing.Id == id)
            return thing;
    }
    return null;  // 错误:无法将 null 转换为类型参数“T”,因为它可能是值类型。请考虑改用“default(T)”代替。
}</code>
로그인 후 복사

이 코드는 컬렉션에서 일치하는 요소를 찾을 수 없는 경우 null을 반환하려고 시도하지만 빌드 오류가 발생합니다. 오류 메시지에는 T가 값 유형일 수 있으므로 null을 유형 매개변수 T로 변환할 수 없다고 명시되어 있습니다.

이 문제를 해결하는 방법에는 세 가지가 있습니다.

  1. 기본값 반환: default(T)을 사용하여 T 유형의 기본값을 반환할 수 있습니다. 참조 유형의 경우 null을 반환하고 값 유형의 경우 적절한 기본값을 반환합니다(예: int의 경우 0, char의 경우 '). '.

  2. T를 참조 유형으로 제한: T가 참조 유형만 될 수 있다는 것을 알고 있는 경우 where T : class 제약 조건을 메서드 선언에 추가할 수 있습니다. 이렇게 하면 평소처럼 null을 반환할 수 있습니다.

  3. T를 null이 아닌 값 유형으로 제한: T가 null이 아닌 값 유형이라는 것을 알고 있는 경우 where T : struct 제약 조건을 추가하고 평소처럼 null을 반환할 수 있습니다. 이는 Null 참조가 아닌 Null 허용 값 유형의 Null 값을 반환합니다.

위 내용은 유형 매개 변수 T를 사용하여 C# 일반 메서드에서 Null을 안전하게 반환하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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