我正在尝试使用SortedList进行不区分大小写的字符串比较。以下是有效的:
SortedList mySL = new SortedList(new CaseInsensitiveComparer());
mySL.Add("key_1", "val_1");
mySL.Add("key_2", "val_2");
mySL.Add("key_3", "val_3");
if (mySL.ContainsKey("KEY_1"))
MessageBox.Show("is there"); // message appears
else
MessageBox.Show("not found");
但这不是:
public class MySL : SortedList
{
// The only constructor
public MySL(IComparer comparer) {}
...
}
MySL sl = new MySL(new CaseInsensitiveComparer());
sl.Add("key_1", "val_1");
sl.Add("key_2", "val_2");
sl.Add("key_3", "val_3");
if (sl.ContainsKey("KEY_1"))
MessageBox.Show("is there");
else
MessageBox.Show("not found"); // message appears
有人能看出什么问题吗?
答案 0 :(得分:5)
您需要将比较器传递给基类构造函数:
public MySL(IComparer comparer)
: base(comparer) { }