2012-08-14 24 views
0

C#3.5:我不能得到这个代码编译:我们不能在HashSet中使用StringComparison吗?

HashSet<string> classDeclarations = new HashSet<string>(StringComparison.InvariantCultureIgnoreCase); 

我得到这个错误:

Argument 1: cannot convert from 'System.StringComparison' to 'System.Collections.Generic.IEqualityComparer'

所以我无法通过一个比较?

回答

7

StringComparison是许多与字符串相关的函数使用的枚举。
由于HashSet<T>与字符串无关,因此无法使用StringComparison

您需要使用StringComparer类的静态属性,该类实现IEqualityComparer<String>

7

你需要做的是为

HashSet<string> myHashSet = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase); 
+1

谢谢啊棘手。 – Bohn 2012-08-14 13:08:33

+0

对于这两个看起来相同的功能集合一直是一个烦恼。有谁知道是否有这个原因? – StingyJack 2012-08-14 13:10:24

+0

看来我的问题已被问到(http://stackoverflow.com/q/8918032/16391)之前,但它仍然感觉像一个代码味道。 – StingyJack 2012-08-14 13:14:59

相关问题