inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문

배열

컬렉션의 값 복사 방법 질문.

해결된 질문

410

KoKo

작성한 질문수 18

1

안녕하세요. 제가 컬렉션으로 이것저것 해보던중 궁금한 점들이 있어 질문 드립니다.

첫째. List<T>, Linked<T> 객체를 생성할때 생성자에 배열을 넣으면 해당 배열의 값을 복사하여 객체가 생성되던데 이것이 딕셔너리를 제외한 모든 컬렉션에 해당하는 것인가요?

둘째. 제가 List<T> list1을 선언, 초기화 하고 이를 List<T> list2 = new List<T>(list1); 으로 생성자에 넣으니 list2가 list1의 값을 복사한채 선언되었습니다. list1의 값을 수정해도 list2의 값이 변하지 않은것을 보니 재대로 깊은 복사가 된것으로 보이는데 인터넷에서 찾아보니 다른 사람들은 리스트 복사에 ToList, ConvertAll 등의 함수를 사용했었습니다. 정리하면 컬렉션 형식들은 객체 선언시 생성자에 같은 형식의 객체를 인수로 넣는것이 깊은 복사 방법으로 올바른 것인가요? 그렇다면 이 방법이 ToList 등 컬렉션 복사 함수들과 어떤 차이가 있나요? 답변 부탁드립니다.

// 참고 코드
using System;
using System.Collections.Generic;

namespace ServeCs
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] array = { 1,2,3,4,5 };
            List<int> list1 = new List<int>(array);
            List<int> list2 = new List<int>(list1);

            list1.Insert(0, 10);
            foreach (int i in list2)
                Console.WriteLine(i);
        }
    }
}

C#

답변 1

1

Rookiss


헷갈릴 때는 실제로 f12 타고 가서 설명을 읽어보면 됩니다.
List를 만들 때 생성자에서 array, list를 같이 넣어주면 IEnumerable 인터페이스를 받는 형태가 되고
위의 설명처럼 [복사] 방식으로 데이터를 이전해주는 것을 알 수 있습니다.
그리고 모든 데이터를 넣을 수 있는 공간도 할당된다고 친절하게 설명되어 있네요.

동일한 결과를 아주 다양한 방법으로 만들 수 있으니 뭐가 맞고 뭐가 틀리다고 생각할 필요는 없고
결과가 동일하면 일단 만족하고 넘어가시면 됩니다.
스포를 드리자면 ToList() 사용하는 방식은 LINQ 및 Enumerator과 깊은 연관성이 있는데
그건 고~급 C#을 다룰 때 나중에 찬찬히 살펴보시기 바랍니다.

Generic에 대한 질문 있습니다.

0

116

2

2022 버전에 커뮤니티 버전이 없는데 2026 버전으로 해도 무관?

0

229

2

다형성 캐시 문제

0

138

3

.

0

79

1

프로퍼티 강의 질문 있습니다.

0

87

1

이후 커리 질문

0

92

1

static

0

104

2

강의에는 새로운 클래스 파일을 생성하면...

0

86

1

생성자의 이름 선언

0

74

1

9:03 Divide(10 , 3) 부분 질문입니다

0

96

1

깃허브 관련 질문 있습니다.

0

252

1

비쥬얼 스튜디오 업데이트가 된건가요..? 매개변수 오류 관련 질문

0

261

1

C# 시리즈 || C++ 시리즈 자료구조 강의에 대한 질문입니다!

0

314

2

Activator 질문있습니다

0

346

1

이넘 타임 선언 질문

0

361

1

Sort 오름차순, 내림차순

0

335

1

질문 있습니다.

0

256

1

팩토리얼 문제

0

280

1

Sort함수 질문있습니다.

0

274

1

다형성 함수 질문 있습니다.

0

231

1

질문이 있습니다.

0

236

1

섹션2 연습문제 질문입니다.

0

224

1

안녕하세요~서버에 대해 질문이 있습니다.

1

290

1

텍스트 색깔이 제 편집기와 달라서 수강에 어려움이 있습니다ㅜㅜ

0

402

1