Tool:Visual Studio 2015 Enterprise
OS:Windows 10
.NET Framework 4.6
若想要有一個集合,可以儲存不重複的項目,又不常變動,並且要支援Thread Safe的功能,可以使用.NET Framework 4.5版新增的System.Collections.Immutable命名空間下的ImmutableHashSet類別。
這個集合真是太好用了。
以下是在Console程式使用範例,首先使用Nuget安裝套件
Install-Package System.Collections.Immutable
範例叫用六行Add方法新增6個項目到集合中,ImmutableHashSet會自動保留唯一項目,因此實際上放到集合中的項目只有3個:
using System;
using System.Collections.Immutable;
namespace ConsoleApplication2 {
class Program {
static void Main( string [ ] args ) {
ImmutableHashSet<int> set = ImmutableHashSet<int>.Empty;
set = set.Add( 100 );
set = set.Add( 300 );
set = set.Add( 200 );
set = set.Add( 100 );
set = set.Add( 300 );
set = set.Add( 200 );
Console.WriteLine( set.Count ); //3
foreach ( var item in set ) {
Console.WriteLine( item );
set = set.Remove( item );
}
Console.WriteLine( set.Count ); //0
}
}
}
此範例執行結果:
若想要排序集合中的內容,可以改用ImmutableSortedSet:
using System;
using System.Collections.Immutable;
namespace ConsoleApplication2 {
class Program {
static void Main( string [ ] args ) {
ImmutableSortedSet<int> set = ImmutableSortedSet<int>.Empty;
set = set.Add( 100 );
set = set.Add( 300 );
set = set.Add( 200 );
set = set.Add( 100 );
set = set.Add( 300 );
set = set.Add( 200 );
Console.WriteLine( set.Count ); //3
foreach ( var item in set ) {
Console.WriteLine( item );
set = set.Remove( item );
}
Console.WriteLine( set.Count ); //0
}
}
}
此範例執行結果:
不過要特別注意的是,大量的使用ImmutableHashSet與ImmutableSortedSet可能會讓程式的效能變差,要小心使用。
沒有留言:
張貼留言