Let's assume this class in C#:
public class LimitedList : List
{
private int _maxitems = 500;
public void Add(T value) /* Adding a new Value to the buffer */
{
base.Add(value);
TrimData(); /* Delete old data if lenght too long */
}
private void TrimData()
{
int num = Math.Max(0, base.Count - _maxitems);
base.RemoveRange(0, num);
}
}
The compiler gives me this warning in the line "public void Add(T value)":
warning CS0108: 'System.LimitedList.Add(T)' hides inherited member 'System.Collections.Generic.List.Add(T)'. Use the new keyword if hiding was intended.
What do I have to do to avoid this warning?
Thx 4 your help
Answer
No - don't use new
here; that doesn't give you polymorphism. List
isn't intended for inheritance in this way; use Collection
and override
the Add
InsertItem
method.
public class LimitedCollection : Collection
{
private int _maxitems = 500;
protected override void InsertItem(int index, T item)
{
base.InsertItem(index, item);
TrimData(); /* Delete old data if lenght too long */
}
private void TrimData()
{
int num = Math.Max(0, base.Count - _maxitems);
while (num > 0)
{
base.RemoveAt(0);
num--;
}
}
}
No comments:
Post a Comment