簡體   English   中英

如何在C#中模擬元組和集合?

[英]How to simulate tuples and sets in C#?

我想在c#中使用python的一些功能,如Tuples和Sets。 我應該實施它們嗎? 還是已經實施了? 任何人都可以知道.net語言的動態數據結構庫嗎?

.NET 3.5具有HashSet

.NET 4.0將具有Tuple類。 如文章中所述,早期版本的.NET確實包含KeyValuePair <TKey,TValue>,它類似於元組<T1,T2>,主要區別在於KeyValuePair要求TKey是唯一的。

對於集合,HashSets(.NET 3.5特性)可以很好地完成這個任務。

對於元組的部分答案:

  • .NET 4.0為元組提供[一些]支持。
  • 早期版本的C#可以使用匿名類型(我認為在.Net 2.0,3.0中引入,肯定會有所有LINQ的東西)。

這些方法都不像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"
  };

如果您使用的.NET Framework早於上面提到過,那么Wintellect Power Collections可能會引起一些興趣 - 它有2 Pair和3元組的PairTriple ,以及SetBagOrdered等兩種集合。 。

當然,沒有什么能阻止你自己實現4.0的Tuple

(順便說一句,關於這些數據結構本身並沒有特別“動態”)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM