C# List string string 하는 방법. 배열 없이 출력~ (밸류 튜플)

C#에서 List에 string을 추가하여 사용하다가, (string, string)이 필요한 상황이 생겼습니다. (string + string)으로 하는 구분자를 통한 문자열 연결 방식은 선호하지 않는 터라 방법을 찾던 도중, 문자 그대로 (string, string)을 사용하면 된다는 것을 깨닫게 되었습니다.

이번에 소개해드릴 것은 밸류 튜플(ValueTuple)입니다. 사용을 위한 전제조건은 .NET Framework 기준으로 4.7버전 이상이어야 합니다! 프레임워크 호환이 필요한 경우에는 사용하지 못하거나, 튜플 타입(리퍼런스)을 사용하거나, 스트럭트, 클래스 등을 사용하여야 할 것입니다.

밸류 튜플은 여러 사용 방법이 있는데, 이번 예제에서는 간단하게 괄호를 추가하여 처리하는 방법에 대해 알려드리려고 합니다. 이러한 단순한 방법으로도 튜플을 효과적으로 사용할 수 있답니다. 해당 예제에서 알려드리는 것은 밸류 튜플이며, 튜플과 차이는 다음과 같습니다.

  • System.ValueTuple 형식은 값 형식입니다. (밸류 타입)
    System.Tuple 형식은 참조 형식입니다. (리퍼런스 타입)
  • System.ValueTuple 형식은 변경할 수 있습니다. (뮤터블)
    System.Tuple 형식은 변경할 수 없습니다. (이뮤터블)
  • System.ValueTuple 형식의 데이터 멤버는 '필드'입니다.
    System.Tuple 형식의 데이터 멤버는 '속성' (프로퍼티)입니다.

List<(string, string)> list = new List<(string, string)>();

위의 코드는 문자열과 문자열의 쌍으로 이루어진 ValueTuple 유형의 요소를 포함하는 새로운 List를 초기화하는 예제입니다.

호환성 확인

대상 프레임워크가 4.7 버전 이상이어야 사용이 가능합니다. 이러한 버전에서는 ValueTuple이 네이티브로 제공되므로 별도의 작업이 필요하지 않습니다. 더 오래된 버전을 사용하는 경우 NuGet에서 ValueTuple 패키지를 가져와야 하는 경우도 있답니다.

네임드 튜플

가독성과 코드 명확성을 높이기 위해 튜플 요소를 초기화하는 동안 이름을 지정하는 기능을 사용할 수 있으며, 활용 예제는 다음과 같습니다. 튜플 요소에 이름을 지정할 수 있는 기능은 코드 가독성을 향상시키며 각 값의 목적을 이해하기 쉽게 만든다는 장점이 있답니다.

List<(string s1, string)> list = new List<(string, string)>();
list.Add(("S1", "S2"));
string testS1 = list[0].s1;
string testS2 = list[0].Item2;

첫 번째 아이템은 s1 이라는 이름으로 초기화 하였으며, 두 번째 아이템은 그대로 사용하였습니다. 명시하지 않았다면 두 튜플 요소 모두 item1, item2로 접근할 수 있습니다.

밸류 튜플

참고로 ValueTuple은 구조체로, 클래스인 Tuple보다 성능상의 구조적 이점을 생각해 볼 수도 있습니다. 이는 메모리 사용 및 처리 측면에서 더 효율적일 수 있기 때문입니다.

이전최근
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗