>

IReadOnlyList<T> 를 사용해야합니다  내 필요에 가장 잘 맞기 때문에 반환 매개 변수로 사용할 수 있지만 아래 예제에서 볼 수 있듯이 실제로 읽기 전용이 아닌 경우 래핑 된 목록을 수정할 수 있습니다.

using System.Collections.Generic;
using System.Collections.Immutable;
public class Test
{
    public Test()
    {
        // return an IReadOnlyList that wraps a List, we can modify content
        var list1 = GetList1();
        if (list1 is List<Section> sections1) // can be true
        {
            sections1.Clear();
        }
        // return an IReadOnlyList that wraps an ImmutableArray, we cannot modify content
        var list2 = GetList2();
        if (list2 is List<Section> sections2) // never true
        {
            sections2.Clear();
        }
    }
    public static IReadOnlyList<Section> GetList1()
    {
        return new List<Section> {new Section()};
    }
    public static IReadOnlyList<Section> GetList2()
    {
        return ImmutableArray.Create(new Section());
    }
}
public struct Section
{
}

문제 :

ImmutableArray<T>  읽기 전용이므로 멋지게 보입니다. 유일한 것은 전체 기능을 갖춘 클래스 : 사본을 생성하는 변경을 허용합니다.

따라서 IReadOnlyList<T> 를 돌려 주겠다  의도는 간단하지만 수정 가능한 목록 문제를 해결해야합니다.

질문 :

와이즈 비즈를 반환합니다   ImmutableArray<T> 로  올바른 접근 방식입니까?

그렇지 않다면 어떻게해야하는지 제안 할 수 있습니까?

IReadOnlyList<T>

  • 답변 # 1

    이게 IReadOnlyList 가 아니야  작동

    IReadOnlyList 인터페이스

    와이즈 비즈 와이즈 비즈  숫자와 순서가있는 목록을 나타냅니다.   목록 요소 중 읽기 전용입니다.목록 요소의 내용이 아닙니다   읽기 전용이어야합니다.

    와이즈 비즈를 원한다면  와이즈 비즈  체크 아웃

    System.Collections.Immutable 네임 스페이스

    와이즈 비즈

    The

  • 이전 asp.net mvc - EF 6에서 명령 시간 초과 설정
  • 다음 c# - 렌더 텍스처로드 및 설정