Si necesita recuperar el valor máximo con frecuencia, puede pensar en crear su propia clase de lista (o derivar de List) que mantiene el elemento máximo en una caché. una clase de este tipo podría tener este aspecto:
public class MaxList<T> : IList<T>, ICollection<T>, IEnumerable<T>
{
T Maximum { get; set; }
List<T> _list;
public T this[int index] { get; set; }
public void Add(T item)
{
if (item > this.Maximum)
{
this.Maximum = item;
}
_list.Add(item);
}
// ... IEnumerable<T>, ICollection<T> and IList<T> members
}
Como alternativa, podría derivar de la lista directamente y sobrescribir la opción Agregar y quitar métodos (básicamente todos los métodos que modifican elementos de la lista) y actualizar la memoria caché en consecuencia.
Si este enfoque es realmente un beneficio depende de su situación. Definitivamente es que si tiene una lista muy grande rara vez se actualiza y necesita recuperar el máximo con frecuencia. De lo contrario, busque las soluciones ya sugeridas porque son mucho más simples.
Ilimitado? Eso es un montón de enteros. – Hardwareguy
Creo que esta es una pregunta capciosa. – Groo
@Groo: no es una pregunta engañosa. –