以下是我使用的類。創建變量一次
刪除
問題是,這裏是我的函數來更新我的工具提示。
我的問題是,如何在每次調用tooltipUpdate函數時編輯類文件,而不是創建'新的Map()',我寧願在program.cs中創建它一次?
以下是我使用的類。創建變量一次
刪除
問題是,這裏是我的函數來更新我的工具提示。
我的問題是,如何在每次調用tooltipUpdate函數時編輯類文件,而不是創建'新的Map()',我寧願在program.cs中創建它一次?
在你的班級內創建你的實例。將該定義放在第tooptipUpdate
方法之外。
Map map = new Map();
public void tooltipUpdate(int m)
{
toolTip1.SetToolTip(pictureBox1, map[m]);
}
我喜歡這個回答。 – Andrew
@Andrew如果你喜歡它,你必須勾選它。 –
保持變量超出函數的範圍。
Map map = new Map();
public void tooltipUpdate(int m)
{
toolTip1.SetToolTip(pictureBox1, map[m]);
}
注意,你不能使用var
關鍵字的方法的範圍之內,所以你需要顯式聲明的類型。從var docs:
在Visual C#3.0開始,這是在方法 範圍內聲明的變量可以有一個隱式類型變種。與隱式類型化的本地 變量類似,如果您自己聲明瞭 類型,但編譯器確定類型。
此外,Implicitly Typed Local Variables (C# Programming Guide)文件對如何var
關鍵字作品良好的信息,當它是合法使用var
。
我們可以傳遞隱式類型變量作爲函數參數嗎?因爲OP做了'toolTip1.SetToolTip(pictureBox1,map [m]);'?這裏'map'是使用'var'創建的。 –
@SudhakarTillapudi是的,變量仍然是強類型的,因此任何使用該變量的方法調用都將進行類型檢查,並且如果它們與方法簽名不匹配,將會編譯失敗。 –
如果你不認爲map
應該在類級別更改,使其readonly
並在構造函數實例化它。
private readonly Map map;
public MyClass()
{
map = new Map();
}
然後,
public void tooltipUpdate(int m)
{
toolTip1.SetToolTip(pictureBox1, map[m]);
}
這些答案都是很好的答案,但我會建議通過地圖對象的方法。所以我提出這個:
Map map = new Map();
到Program.cs中,或任何你調用TooltipUpdate方法,改變tooltipupdate這樣:
public void tooltipUpdate(int m, Map map)
{
toolTip1.SetToolTip(pictureBox1, map[m]);
}
這幾乎比在聲明映射一定要好類級別,正確地將控制轉換爲調用方法。例如,您可以以這種方式同時擁有2個地圖對象。
我可能會誤解這個問題。如果您在program.cs中創建地圖並將其傳遞給工具提示,它應該可以解決您的問題。還有其他選項,如單例模式,但最好將它傳遞給tooltipupdate方法。 –
我以爲你不應該從'Dictionary <>'繼承,而是從'KeyedCollection <>'繼承。 – ja72