113. StringComparer

בהמשך לשבוע השווה,

נניח שאנחנו מעוניינים בIEqualityComparer שמשווה stringים עם אפשרות להתעלם מcase sensitive או אפשרויות אחרות.

מסתבר שיש כבר מימושים כאלה בFramework, והם יותר טובים מזה שרשמתי בראשון. המימושים משתמשים במחלקה StringComparer.

נוכל להשתמש בהם בצורה הבאה: גישה לאחד מהComparerים הסטטיים הבאים:

1
2
3
4
5
6
StringComparer.CurrentCulture,
StringComparer.CurrentCultureIgnoreCase,
StringComparer.InvariantCulture,
StringComparer.InvariantCultureIgnoreCase,
StringComparer.Ordinal,
StringComparer.OrdinalIgnoreCase

או: שימוש בפונקציה

1
StringComparer.Create

המקבלת CultureInfo והאם להתעלם מcase sensitive.

כך נוכל לדוגמה ממש את הדוגמה של אתמול בצורה הבאה:

1
2
IDictionary<string, object> nameToValue =
new Dictionary<string, object>(StringComparer.CurrentCultureIgnoreCase);

היתרון במימוש הזה כאמור, הוא שהוא לא יוצר אובייקט חדש עבור כל גישה לDictionary. (מי שרוצה מוזמן לבדוק בReflector)

המשך יום שווה

שתף