مقارنة الطبقات الداخلية المتداخلة داخل فئة عامة
-
19-09-2019 - |
سؤال
أقوم بصياغة فئة داخلية متداخلة داخل فئة عامة وأنا غير متأكد إذا أكتب هذا بشكل صحيح. هل هناك أي شيء خاطئ للغاية هنا؟
إليك الرمز:
public class Foo<T> where T : IComparable<T>
{
protected class Bar : IComparable
{
private KeyValuePair<T, string> _keyval;
public Bar(KeyValuePair<T, string> kv)
{
_keyval = kv;
}
public int CompareTo(object obj)
{
T comparing = (T)obj;
return _keyval.Key.CompareTo(comparing.key);
}
}
private List<Bar> _bars;
public Foo()
{
_bars = new List<Bar>();
}
public void AddKeyValInOrder(KeyValuePair<T, string> kv)
{
Bar toAdd = new Bar(kv);
int positionToAddAt = _bars.BinarySearch(toAdd);
if (positionToAddAt < 0)
positionToAddAt = positionToAddAt ^ -1;
_bars.Insert(positionToAddAt, toAdd);
}
}
المحلول
أولا، لاحظ أنه إذا لم تكن بحاجة إلى التكرارات، SortedList<T>
قد يكون مفيدا.
ال List<Bar>
سوف تريد المقارنة Bar
الحالات، لذلك احتياجات المقارنة الخاصة بك للعمل Bar
(معظمها تنفذ بسهولة عن طريق التنفيذ IComparable<Bar>
:
protected class Bar : IComparable, IComparable<Bar>
{
private KeyValuePair<T, string> _keyval;
public Bar(KeyValuePair<T, string> kv)
{
_keyval = kv;
}
public int CompareTo(Bar other)
{
return _keyval.Key.CompareTo(other._keyval.Key);
}
int IComparable.CompareTo(object obj)
{
return CompareTo(obj as Bar);
}
}
لا تنتمي إلى StackOverflow