Я предполагаю, что вы на самом деле хотите хранить все объекты:
catalog.Add("1", resCourse);
catalog.Add("2", tauCourse);
Конечно, когда вы туда пойдете, вам понадобится общий базовый класс (или интерфейс) для двух ваших курсов, чтобы получить доступ к значениям:
public abstract class CourseBase {
public string CID { get; set; }
public string CName{ get; set; }
}
public class ResearchCourse : CourseBase { }
public class TaughtCourse : CourseBase { }
Тогда вы можете сохранить / получить доступ так:
Hashtable catalog = new Hashtable();
catalog.Add("1", resCourse);
catalog.Add("2", tauCourse);
foreach (DictionaryEntry de in catalog)
{
Console.WriteLine("{0}, {1}", de.Key, ((CourseBase)de.Value).CID);
}
Или еще лучше, используйте общий словарь:
var resCourse = new ResearchCourse() { CID = "RC1000", CName = "Rocket Science" };
var tauCourse = new ResearchCourse() { CID = "TC1000", CName = "Marketing" };
var catalog = new Dictionary<string, CourseBase>();
catalog.Add("1", resCourse);
catalog.Add("2", tauCourse);
foreach (string key in catalog.Keys)
{
Console.WriteLine("{0}, {1}", key, catalog[key].CID);
}