问题描述
我有一个哈希表,我试图在其中存储系统 Timer 对象。如何通过其键访问 Timer 并使用其方法?有没有办法将对象转换为计时器?
Hashtable example = new Hashtable();
public void test ()
{
System.Timers.Timer newTimer = new System.Timers.Timer();
example.Add("test",newTimer);
example["test"].Start(); //error
}
解决方法
为什么要使用 HashTable
?使用通用的 Dictionary<string,System.Timers.Timer>
:
Dictionary<string,System.Timers.Timer> timers = new Dictionary<string,System.Timers.Timer>();
public void test ()
{
System.Timers.Timer newTimer = new System.Timers.Timer();
timers.Add("test",newTimer);
timers["test"].Start();
}
当然,您也可以简单地将 HashTable
中的 Object 强制转换为 System.Timers.Timer
,但在 99% 中 HashTable
已过时。因此,对于上面的代码,您必须对其进行强制转换:
System.Timers.Timer timer = example["test"] as System.Timers.Timer;
timer?.Start(); // the ? ensures that the code works even if the type is not a Timer,it simply skips it