> 백엔드 개발 > C++ > 익명 형식이 C#에서 인터페이스를 구현할 수 있나요?

익명 형식이 C#에서 인터페이스를 구현할 수 있나요?

Mary-Kate Olsen
풀어 주다: 2025-01-13 17:56:43
원래의
152명이 탐색했습니다.

Can Anonymous Types Implement Interfaces in C#?

익명 클래스에 의한 인터페이스 구현에 대한 논의

다음 코드 예제는 익명 유형이 인터페이스를 구현할 수 있음을 암시하는 것 같습니다.

<code class="language-csharp">public interface DummyInterface
{
    string A { get; }
    string B { get; }
}

public class DummySource
{
    public string A { get; set; }
    public string C { get; set; }
    public string D { get; set; }
}

public class Test
{
    public void WillThisWork()
    {
        var source = new DummySource[0];
        var values = from value in source
                     select new
                     {
                         A = value.A,
                         B = value.C + "_" + value.D
                     };

        DoSomethingWithDummyInterface(values);
    }

    public void DoSomethingWithDummyInterface(IEnumerable<DummyInterface> values)
    {
        foreach (var value in values)
        {
            Console.WriteLine("A = '{0}', B = '{1}'", value.A, value.B);
        }
    }
}</code>
로그인 후 복사

그러나 익명 유형은 인터페이스를 구현할 수 없다는 점에 유의해야 합니다. C# 프로그래밍 가이드에는 다음과 같이 명확하게 명시되어 있습니다.

<code>匿名类型是包含一个或多个公共只读属性的类类型。不允许使用其他类型的类成员,例如方法或事件。匿名类型不能转换为除 object 之外的任何接口或类型。</code>
로그인 후 복사

결과적으로 select 표현식의 익명 유형을 DummyInterface 유형으로 변환할 수 없기 때문에 제공된 코드 예제는 컴파일되지 않습니다.

익명 유형을 사용하여 인터페이스를 구현하는 또 다른 방법은 "동적 인터페이스 래핑" 문서에 설명된 대로 동적 유형을 사용하는 것입니다. 여기에는 필요한 인터페이스를 구현하는 동적 개체를 만들고 그 안에 익명 형식을 래핑하는 작업이 포함됩니다. 그러나 동적 유형 지정으로 인해 성능 오버헤드가 발생할 수 있고 디버그하기가 더 어렵기 때문에 이 접근 방식에는 한계가 있습니다.

위 내용은 익명 형식이 C#에서 인터페이스를 구현할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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