创建变量一次

时间:2014-03-07 03:31:01

标签: c#

以下是我使用的以下课程。

除去

问题是,这是我更新工具提示的功能。

我的问题是,如何编辑类文件,而不是每次调用函数tooltipUpdate时都创建'new Map()',我宁愿在program.cs中创建一次?

4 个答案:

答案 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个地图对象。