注意:下面的代码示例使用 C#,但希望您可以阅读 vb.net 的意图
好吧,一种更简单的方法是拥有一个包含名称和类型属性的结构/类,例如:
public class Room
{
public string Name { get; set; }
public int Type { get; set; }
public Room(string name, int type)
{
Name = name;
Type = type;
}
}
然后给定一组房间,您可以使用简单的 linq 表达式找到给定类型的房间:
var match = rooms.Where(r => r.Type == 2).Select(r => r.Name).ToList();
然后您可以从一组匹配的房间名称中找到一个随机条目(见下文)
但是,假设您要坚持使用并行数组,一种方法是从类型数组中找到匹配的索引值,然后找到匹配的名称,然后使用随机函数找到其中一个匹配值。
var matchingTypeIndexes = new List<int>();
int matchingTypeIndex = -1;
do
{
matchingTypeIndex = Array.IndexOf(roomType, 2, matchingTypeIndex + 1);
if (matchingTypeIndex > -1)
{
matchingTypeIndexes.Add(matchingTypeIndex);
}
} while (matchingTypeIndex > -1);
List<string> matchingRoomNames = matchingTypeIndexes.Select(typeIndex => roomName[typeIndex]).ToList();
然后找到匹配的随机条目(来自上面生成的列表之一):
var posn = new Random().Next(matchingRoomNames.Count);
Console.WriteLine(matchingRoomNames[posn]);