2016-12-02 57 views
-3

所以局部變量,我有了一個Dictionary<string,System.Timers.Timer>稱爲「計時器」一類的,我在訪問了「定時器」字段的類中的方法:我可以聲明直接修改類字段

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(); 
} 

計時器」 是德作爲局部變量分類,並且不修改Dictionary

那我能不能設置像將修改類字段Dictionary第二個例子中的「計時器」局部變量,否則我將在第一個例子中使用直接訪問方式是怎樣的?

+3

C#沒有全局變量。你可以有一個靜態字段,但它需要成爲某種類型的一部分。 – mason

+0

看看屬性或自動屬性...也做谷歌搜索和閱讀'範圍'並瞭解哪些優先 – MethodMan

回答

2

你可以做一個混合的方法:

string tag = (string)editor.Tag; 
timers[tag].Dispose(); 

var timer = new Timer(Timeout*1000) { AutoReset = false }; 
timer.Elapsed += TimerElapsed; 
timer.Start(); 

timers[tag] = timer; 
+0

這是我一直在尋找。謝謝! –

相關問題