【发布时间】:2016-12-02 16:43:17
【问题描述】:
所以,我有一个类有一个名为“timers”的Dictionary<string,System.Timers.Timer>,并且我在该类中有一个访问“timers”字段的方法:
public static void Save(FastColoredTextBox editor) //this works fine
{
timers[(string)editor.Tag].Dispose();
timers[(string)editor.Tag] = new Timer(Timeout*1000) { AutoReset = false };
timers[(string)editor.Tag].Elapsed += TimerElapsed;
timers[(string)editor.Tag].Start();
}
如您所见,我使用timers[(string)editor.Tag],因为当我设置这样的变量时:
public static void Save(FastColoredTextBox editor) //doesn't modify the Dictionary
{
var timer = timers[(string) editor.Tag];
timer.Dispose();
timer = new Timer(Timeout*1000) { AutoReset = false };
timer.Elapsed += TimerElapsed;
timer.Start();
}
“timer”被声明为局部变量,不会修改Dictionary。
那么,我可以在第二个示例中设置一个像“timer”这样的局部变量来修改类字段Dictionary,还是我必须使用像在第一个例子?
【问题讨论】:
-
C# 没有全局变量。你可以有一个静态字段,但它必须是某种类型的一部分。
-
看看属性或汽车属性..也做一个谷歌搜索并阅读
Scope并了解哪个优先
标签: c# dictionary timer