He creado una List con tamaño fijo
private List<ushort> responseData = new List<ushort>(7);Los elementos se agregan en un observable reactivo, pero me gustaría saber si está lleno en cada suscripción.
Actualmente está comprobado por
if (responseData.Count == 7) Dado que el tamaño de los datos de respuesta será dinámico, no usaré el 7 estático tanto en la inicialización de List como en la verificación de si está llena. Sin embargo, me preguntaba si ya configuré el tamaño de los datos de respuesta; ¿No puede verificar sin usar la referencia de tamaño nuevamente?
Valoro mucho cualquier respuesta.
Si entiendo correctamente, ¿podría estar pensando en la propiedad List<T>.Capacity ?
Cuando inicializa una lista, puede especificar la capacidad interna que indica la cantidad de elementos que se pueden agregar a una lista antes de que sea necesario cambiar el tamaño. El valor predeterminado es 4 para la capacidad de la lista [ solía ser, necesita confirmación de que todavía lo es ].
Entonces, si crea una nueva lista como tal:
var myList = new List<int>(100);Puede crear un método de extensión que agregue y verifique por usted:
public static class ListExtension { public static bool Add<T> ( this List<T> list, T item, out bool isFull ) { isFull = false; if ( list.Count == list.Capacity ) { isFull = true; return false; } list.Add ( item ); isFull = list.Count == list.Capacity; return true; } }Ahora, esto se indica en los documentos de Microsoft:
La capacidad siempre es mayor o igual que Count. Si Count excede la capacidad mientras se agregan elementos, la capacidad aumenta al reasignar automáticamente el arreglo interno antes de copiar los elementos antiguos y agregar elementos nuevos.
Por lo tanto, el método de extensión solo debería permitirle agregar elementos hasta la Capacity inicial y no más. Cuando se usa así, var success = myList.Add(item, out var isFull) , isFull indicará si la lista está llena. El valor de retorno indicará si la operación fue exitosa.