从2个不同的类创建一个对象两次是不是很糟糕?

时间:2011-12-18 18:39:15

标签: c# class ambiguity balloon-tip

我有一个主要表单,当用户点击按钮时会显示气球提示。气球提示是在我的BalloonTip类的Main表单类中实例化的对象。然后我有第二个表单进行设置。当用户点击设置表单中的内容时,也会出现气球提示。我目前在我的Main类和SettingsForm类中实例化了一个balloontip对象。我的两个问题是:

  1. 有没有更合适的方法来应对这种情况?
  2. 如果在每个类中创建一个对象1次,如果对象具有相同的名称(即objectBalloon),是否会在编译器中引起任何歧义?

1 个答案:

答案 0 :(得分:3)

实例化对象时,它始终在一定范围内。

例如:

public void DoSomething()
{
    BalloonTip b = new BalloonTip();

    DoSomethingElse();
}

public void DoSomethingElse()
{
    BalloonTip b = new BalloonTip();
}

会给你两个不同的BalloonTip实例,它们都被称为'b',但它们都只在声明它们的函数范围内有效。

您应该将类​​定义视为可以实例化多个对象的蓝图。在一个范围内,您可以拥有多个实例,但它们应具有不同的名称。

当范围不重叠时,您可以使用相同的名称指向其他实例。

您也可以将实例传递给另一个方法,在该函数中,您可以通过其他名称引用该实例。

public void DoSomething()
{
    BalloonTip b = new BalloonTip();

    DoSomethingElse(b);
}

public void DoSomethingElse(BalloonTip c)
{
  // c points to the same instance as b in the previous function
}