Supprimer l'élément de la Liste et d'obtenir l'élément simultanément

En C# je suis en train d'essayer d'obtenir un élément d'une liste à un hasard de l'index. Quand il a été récupéré je veux qu'il soit enlevé de sorte qu'il ne peut pas être sélectionné plus. Il me semble que si j'ai besoin de beaucoup d'opérations pour ce faire, n'est-ce pas là une fonction où je peux simplement extraire un élément de la liste? le RemoveAt(index) la fonction est nulle. Je voudrais un avec une valeur de retour.

Ce que je fais:

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);

Ce que je voudrais faire:

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);

Une telle "removeAndGetItem" fonction existe?

Vous devriez écrire votre propre autant que je suis au courant, seulement une Pile ou une File d'attente a ce genre de fonctionnalité intégrée. Serait-ce le besoin d'être thread-safe?
Pourquoi ne pas obtenir ce que vous voulez à une nouvelle variable/liste?

OriginalL'auteur Eirik | 2013-03-01