【问题标题】:Is it bad to create an object twice from 2 different classes?从 2 个不同的类创建一个对象两次是不是很糟糕?
【发布时间】:2011-12-18 18:39:15
【问题描述】:

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

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

【问题讨论】:

  • 拥有多个类实例没问题。
  • 为什么一开始是在服务器端创建的?
  • 而且有两个同名变量没有问题,只要它们用范围分隔即可。
  • 如果变量不在同一个范围内,不会造成歧义。如果有歧义,编译器无论如何都会抱怨......
  • 事实上你不能在同一个作用域中拥有两个同名的变量。由于非常明显的原因,编译器不会让你这样做。

标签: c# class ambiguity balloon-tip


【解决方案1】:

当你实例化一个对象时,它总是在一定的范围内。

例如:

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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 2016-09-20
    • 2022-07-21
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多