.NET

C# 튜플: 새로운 C# 7 언어 기능

C# 튜플은 C# 7의 새로운 기능입니다. C# 튜플이 어떻게 작동하는지에 대한 기본 사항을 보여드리겠습니다. 또한 튜플이 실제로 작동하는 모습을 보여드리기 위해 약간의 카우치베이스도 섞어보겠습니다. 하지만 원하지 않는다면 카우치베이스 설치 튜플을 가지고 노는 것만으로도 충분히 따라할 수 있으니 걱정하지 마세요.

참고: C#를 한동안 사용했다면, 다음과 같은 내용을 기억하실 수 있습니다. .NET 4에 도입된 튜플 클래스. 해당 클래스는 여전히 존재하지만 C#의 새로운 튜플 기능과는 다릅니다.

C# 튜플이란 무엇인가요?

'튜플'은 요소의 목록에 불과한 수학적 개념의 이름입니다. LISP 언어 계열에서 코딩은 거의 전적으로 모든 것이 목록이라는 개념을 중심으로 구축됩니다. C#는 함수형 프로그래밍 세계에서 아이디어의 핵심을 다시 한 번 차용하여 비함수형 언어에 통합합니다. 따라서 C# 튜플을 얻게 됩니다( 매즈 토르게르센의 오리지널 C# 튜플 제안서 를 참조하세요.)

익명 유형을 기억하시나요?

하지만 간단하게 설명하기 위해 이미 익숙한 익명 유형인 C#를 예로 들어보겠습니다. 검토를 위해 유형을 지정하지 않고 새 객체를 인스턴스화할 수 있습니다:

무대 뒤에서는 실제로 베이스에서 상속하는 유형 개체 유형을 사용할 수도 있지만 일반적으로는 객체의 유형이 아닌 객체만 다룹니다.

또한 메서드에서 익명 타입을 반환하거나 익명 타입을 매개변수로 전달할 때 타입 정보를 손실하지 않고는 프로세스에서 익명 타입을 반환할 수 없습니다.

물론 유용하긴 하지만, 저는 일반적으로 익명으로 처리합니다. 객체 이러한 이유로 사용 중입니다.

이것이 C# 튜플과 무슨 관련이 있나요?

저는 C# 튜플을 익명 타입을 반환하지만 더 풍부한 정보를 제공하는 방법으로 생각합니다. 실제로 클래스를 정의하지 않고도 즉석에서 "클래스"를 생성할 수 있는 방법입니다. 튜플의 구문은 쉼표로 구분된 유형과 이름 목록 주위에 괄호를 넣는 것입니다. 튜플 리터럴은 쉼표로 구분된 리터럴 목록을 괄호로 묶은 것입니다. 예를 들어

참고: 현재 저는 튜플 프로퍼티에 파스칼 케이스를 선호합니다. 이것이 공식적인 지침인지는 모르겠지만 제게는 옳다고 '느껴집니다'.

작동 중인 C# 튜플

저는 Couchbase와 상호 작용하는 간단한 콘솔 앱에서 튜플을 작동시켰습니다.

나는 버킷헬퍼 클래스는 일반 카우치베이스에 비해 매우 단순한 외관입니다. IBucket. 이 클래스에는 키로 문서를 가져와서 튜플을 반환하는 메서드와 문서로 튜플을 삽입하는 메서드 두 가지가 있습니다.

이 헬퍼를 인스턴스화하려면, 이 헬퍼에 IBucket 를 생성자에 추가합니다.

반환 유형으로 튜플

그런 다음 GetTuple 메서드를 사용하여 Couchbase에서 문서를 튜플로 가져올 수 있습니다.

튜플은 문자열(문서 키)과 지정한 유형의 객체로 구성됩니다. 문서 콘텐츠는 JSON이며 .NET SDK에 의해 C# 객체로 직렬화됩니다.

또한 튜플 프로퍼티의 이름이 일치할 필요는 없다는 점에 유의하세요. 저는 객체 in 버킷헬퍼 하지만 저는 영화 내가 전화했을 때 GetTuple<영화. 물론 유형은 일치해야 합니다.

매개변수 유형으로 튜플

다른 방법으로 튜플을 매개 변수로 전달할 수도 있습니다. 삽입튜플.

그리고 생성 랜덤 필름 메서드는 필름 객체를 임의의 값으로 설정합니다( GitHub 소스 를 참조하세요.) 의 튜플 (문자열, 필름) 로 전달됩니다. 삽입튜플. NET SDK는 거기에서 가져와서 적절한 키/값이 포함된 문서를 삽입합니다.

콘솔 앱을 실행하면 다음과 같은 출력이 표시됩니다:

C# tuples sample console output

현재 Couchbase .NET SDK에는 직접 튜플이 지원되지 않으며, 튜플이 필요하지 않을 수도 있습니다. 이 코드는 단순히 C# 튜플을 시연하는 데 도움을 주기 위한 것입니다. 프로덕션 환경에서 BucketHelper를 그대로 사용하지 않는 것이 좋습니다.

TUH-ple 또는 TOO-ple?

교수님이 '투-플'이라고 발음했던 기억이 있어서 저도 그렇게 쓰고 있습니다. 'GIF'의 하드-G/소프트-G 논쟁처럼, 이 논쟁이 가장 중요하다고 생각하며 자신의 발음이 정답이라고 확신하는 사람들이 있을 것입니다. 하지만, 둘 다 허용됩니다..

튜플에 대해 궁금한 점이 있으면 기꺼이 도와드리겠습니다. 다음 주소로 문의하실 수도 있습니다. 트위터 @mgroves 또는 이메일을 보내주세요. matthew.groves@couchbase.com.

이 게시물에서 사용한 Couchbase .NET SDK에 대해 궁금한 점이 있으시면 카우치베이스 .NET 포럼. 또한 카우치베이스 개발자 포털 를 참조하여 .NET SDK 및 Couchbase 전반에 대한 자세한 정보를 확인하세요.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 매튜 그로브스

Matthew D. Groves는 코딩을 좋아하는 사람입니다. C#, jQuery, PHP 등 무엇이든 풀 리퀘스트를 제출할 정도로 코딩을 좋아합니다. 90년대에 부모님의 피자 가게를 위해 QuickBASIC POS 앱을 만든 이후로 전문적으로 코딩을 해왔습니다. 현재 Couchbase의 선임 제품 마케팅 관리자로 일하고 있습니다. 여가 시간에는 가족과 함께 축구 경기를 관람하고 개발자 커뮤니티에 참여하며 시간을 보냅니다. 그는 .NET의 AOP, .NET의 프로 마이크로서비스, Pluralsight 저자, Microsoft MVP의 저자이기도 합니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.