以下是我使用的以下课程。
除去
问题是,这是我更新工具提示的功能。
我的问题是,如何编辑类文件,而不是每次调用函数tooltipUpdate时都创建'new Map()',我宁愿在program.cs中创建一次?
答案 0 :(得分:1)
在班级内创建实例。将定义置于tooptipUpdate
方法之外。
Map map = new Map();
public void tooltipUpdate(int m)
{
toolTip1.SetToolTip(pictureBox1, map[m]);
}
答案 1 :(得分:1)
将变量保持在函数范围之外。
Map map = new Map();
public void tooltipUpdate(int m)
{
toolTip1.SetToolTip(pictureBox1, map[m]);
}
注意,您不能在方法范围之外使用var
关键字,因此您需要明确说明类型。来自var docs:
从Visual C#3.0开始,在方法中声明的变量 scope可以有一个隐式类型var。隐式键入的本地 变量是强类型的,就像你声明了类型一样 你自己,但编译器确定了类型。
此外,Implicitly Typed Local Variables (C# Programming Guide)文档提供了有关var
关键字如何工作以及何时合法使用var
的良好信息。
答案 2 :(得分:0)
如果你不认为map
应该在课程级别进行更改,请将其设为readonly
并在构造函数中对其进行实例化。
private readonly Map map;
public MyClass()
{
map = new Map();
}
然后,
public void tooltipUpdate(int m)
{
toolTip1.SetToolTip(pictureBox1, map[m]);
}
答案 3 :(得分:0)
这些答案都是很好的答案,但我建议将地图对象传递给方法。所以我动了这个:
Map map = new Map();
到program.cs,或者你调用TooltipUpdate方法并将tooltipupdate更改为:
public void tooltipUpdate(int m, Map map)
{
toolTip1.SetToolTip(pictureBox1, map[m]);
}
这几乎肯定比在类级别声明地图更好,正确地将控制反转到调用方法。例如,您可以通过这种方式同时拥有2个地图对象。