В C# Я пытаюсь получить элемент из списка по случайному индексу. Когда он был извлечен, я хочу, чтобы он был удален, чтобы он больше не мог быть выбран. Кажется, мне нужно много операций для этого, нет ли функции, в которой я могу просто извлечь элемент из списка? функция RemoveAt (index) недействительна. Я хотел бы получить возвращаемое значение.Удалить элемент из списка и получить элемент одновременно
Что я делаю:
List<int> numLst = new List<int>();
numLst.Add(1);
numLst.Add(2);
do
{
int index = rand.Next(numLst.Count);
int extracted = numLst[index];
// do something with extracted value...
numLst.removeAt(index);
}
while(numLst.Count > 0);
То, что я хотел бы сделать:
List<int> numLst = new List<int>();
numLst.Add(1);
numLst.Add(2);
do
{
int extracted = numLst.removeAndGetItem(rand.Next(numLst.Count));
// do something with this value...
}
while(numLst.Count > 0);
Существует ли такая функция "removeAndGetItem"?
Вы должны были бы написать ваш собственный - насколько мне известно, только Stack или Queue обладает встроенной функциональностью. Должно ли это быть потокобезопасным? –
Почему бы не получить то, что вы хотите для новой переменной/списка? – Kaf