Trong C# Tôi đang cố gắng lấy một mục từ danh sách ở chỉ mục ngẫu nhiên. Khi nó đã được lấy ra tôi muốn nó được gỡ bỏ để nó không thể được chọn nữa. Có vẻ như tôi cần rất nhiều hoạt động để làm điều này, không phải là có một chức năng mà tôi có thể chỉ cần trích xuất một mục từ danh sách? Hàm RemoveAt (chỉ mục) bị vô hiệu. Tôi muốn có một giá trị trả lại.Xóa mục khỏi Danh sách và nhận mục đồng thời
Những gì tôi đang làm:
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);
Những gì tôi muốn làm:
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);
Có một "removeAndGetItem" chức năng như vậy tồn tại?
Bạn sẽ phải viết của riêng bạn - theo như tôi biết, chỉ có một Stack hoặc một Hàng đợi có loại chức năng này được tích hợp sẵn. Điều này có cần phải được an toàn không? –
Tại sao không nhận được những gì bạn muốn có một biến/danh sách mới? – Kaf