2014-06-26 23 views
4

在C#中是否有值類型語義的集合?那麼set1等於set2,如果它們包含相同的結構體/基元?也許是以相同的順序。C#中是否有任何值類型集合?

+1

值類型和平等語義不直接相關 - 此問題尚不清楚。 (另請參見[SequenceEqual](http://msdn.microsoft.com/zh-cn/library/vstudio/bb348567(v = vs.100).aspx)。) – user2864740

+0

元組和可能的匿名對象是您最接近的投注。雖然,你通常無法列舉當然的屬性。 –

回答

5

HashSet非常接近,但==不會比較集合中的值。 SetEquals將返回true,如果它們包含相同的值。但是,訂單不包括在內。如果訂單很重要,則可以使用SequenceEqual

static void Main(string[] args) 
    { 
    HashSet<int> set1 = new HashSet<int> { 1, 2, 3 }; 
    HashSet<int> set2 = new HashSet<int> { 2, 1, 3 }; 
    HashSet<int> set3 = new HashSet<int> { 1, 2, 3 }; 
    Console.WriteLine(set1.SetEquals(set2));   // True 
    Console.WriteLine(set1.SequenceEqual<int>(set2)); // False 
    Console.WriteLine(set1.SequenceEqual<int>(set3)); // True 
    } 
相關問題