有一个 Hashtable 变量,将 List<> 添加到其中。为什么从 Hashtable 输出时没有 List<> 输出?
static void Main(string[] args)
{
Hashtable catalog = new Hashtable();
for (int i = 0; i < 5; i++)//просто создаётся лист с двумя структурами-мусик и добавляется в каталог-Хештейбл
{
List<Music> disk = new List<Music>() {
new Music() { Author = $"a{i}", Song = $"asong{i}" },
new Music() { Author = $"b{i}", Song = $"bsong{i}" }
};
//PrintDisk(disk); //тут не ругается и всё работает
catalog.Add($"Disk{i}", disk);
}
//PrintDisk(catalog["Disk1"]);//ругается а на верху перед добавление нет
Console.ReadKey();
}
struct Music
{
public string Author;
public string Song;
}
static void PrintDisk(List<Music> disk)
{
foreach (Music x in disk)
{
Console.WriteLine("Author: {0, 10}; Song: {1, 8}", x.Author, x.Song);
}
}
像这样写
PrintDisk((List<Music>)catalog["Disk1"]);它通过 key
HashTable获取object,并且您的方法作为 inputList<Music>,因此您需要转换为您的类型。或使用Dictionary<TKey,TValue>.