2010-04-11 1 views

답변

14

.NET 3.5의 주소는 HashSet입니다.

.NET 4.0의 클래스는 Tuple입니다. 이 기사에서 언급했듯이 이전 버전의 .NET에는 KeyValuePair < TKey, TValue>와 Tuple < T1, T2>가 비슷하지만 KeyValuePair에서는 TKey가 고유해야한다는 것이 다릅니다.

+0

"... 단지 튜플 같다"만 2 튜플이기는하지만 (그건 그렇고, 및 자신의 이와 같은 데이터 구조에 대해 특히 '동적'아무것도 없다). – Thomas

+0

@ 토마스 예, 2 튜플을 지정하려고했습니다. 수정 및 수정 됨. 감사. –

+0

keyvaluepair는 절대 터플이 아닙니다. 그것을 편집하십시오. – nawfal

3

집합의 경우, HashSets (.NET 3.5 기능)은 아주 잘합니다. 튜플

부분적인 답 :

  • .NET 4.0 tuples 대 [어떤] 지원을 제공한다.
  • 이전 버전의 C#에서는 익명 형식을 사용할 수 있습니다 (모든 LINQ와 함께 .Net 2.0, 3.0에서 소개 된 것 같습니다).

이러한 접근 방식 중 어느 것도 Python과 마찬가지로 편리하지 않습니다. 주요 장애는 C#이 정적으로 입력된다는 사실에서 비롯됩니다. 그러나 C# 4.0 Tuple 클래스에는 튜플 생성을 더 쉽게 만드는 팩토리 형 정적 메서드가 있습니다 (최대 8 개 튜플, 즉 8 개 멤버가있는 튜플). 예를 들어 하나 가질 수 있습니다

 
    var customer1 = Tuple.Create("John", "Smith", 14, 5.33, "202-123-444"); 

다음과 같이 익명 유형을 사용할 수 있습니다. 이 방법의 주요 단점은, 하나의 초기화에 사용되는 값은 다른 객체에서 "돌출"경우에는이 명칭은 "투영"암시 될 수 있지만 (명시 적으로 "튜플"의 요소 이름을 필요로한다는 것이다.

 
    customer1 = new Customer { 
       Name = "John", 
       Surname = "Smith", 
       NumberOfVisits = 14, 
       CurrentBalance = 5.33, 
       PhoneNr = "202-123-444" 
    }; 
+1

@mjv : C#은 정적 * 유형 언어입니다. C#과 Python 모두 강하게 입력됩니다. – quamrana

+0

@quamrana : 맞아. 그것이 내가 의미했던 것입니다. 그에 따라 편집되었습니다. – mjv

+0

익명 형식이 C# 3.0/.NET 3.5에 추가되었습니다. .NET 3.0은 BCL을 사용하여 언어를 변경하지 않았습니다. –

1

앞서 언급 한 .NET Framework를 사용하는 경우 Wintellect Power Collections에 관심이있을 수 있습니다. 2 및 3 튜플의 경우 PairTriple이고 Set, BagOrdered과 같은 모음 인 경우 모두 유용합니다.

물론 4.0의구현을 막을 수있는 방법은 없습니다.자신.