Diğer yanıtların gösterdiği gibi burada da gerekli değildir, ancak bir dizeyi kullanmadığınız diğer durumlarda, bir IEqualityComparer<T>
uygulamayı seçebilir ve daha sonra bir .Contains
aşırı yüklenmesini kullanabilirsiniz. İşte bir dizgeyi kullanan bir örnek (yine, diğer cevaplar, zaten ihtiyaçlarınızı karşılayan bir dizi karşılaştırıcı olduğunu göstermiştir). IEnumerable<T>
'u çevreleyen birçok yöntem, bu tür karşılaştırıcıları kabul eden aşırı yüklere sahiptir, bu yüzden bunları nasıl uygulayacağınızı öğrenmek iyidir.
class CustomStringComparer : IEqualityComparer<string>
{
public bool Equals(string x, string y)
{
return x.Equals(y, StringComparison.InvariantCultureIgnoreCase);
}
public int GetHashCode(string obj)
{
return obj.GetHashCode();
}
}
Ve sonra kullanmak o
bool contains = hash.Contains("foo", new CustomStringComparer());
Bir sidenode: zaman 'normal' 'HashSet' (küçük harf duyarlı) oluşturulur, verimlidir bir 'contains' yöntemi oluşturmak imkansızdır. Bunun nedeni, elemanların karmalarının "HashSet" e eklendiklerinde oluşturulmalarıdır. Ve dahili olarak 'içerir' yöntemi, verimli olmaları için karmaları kontrol eder. Varolan bir karma formunu 'büyük/küçük harfe duyarlı' duruma 'büyük/küçük harfe duyarlı' olarak dönüştürmek mümkün değildir. –
Julian