C# 从两个不同的类创建两次对象是否不好?

C# 从两个不同的类创建两次对象是否不好?,c#,class,ambiguity,balloon-tip,C#,Class,Ambiguity,Balloon Tip,我有一个主窗体,当用户单击按钮时,它会显示一个气球提示。气球提示是在我的气球提示类的主窗体类中实例化的对象。然后我有了第二个设置表单。当用户单击设置表单中的某个内容时,气球提示也会出现。我目前在我的主类和SettingsForm类中实例化了一个BalloodTip对象。我的两个问题是: 有没有更合适的方法来处理这种情况 如果在每个类中创建两次对象1,如果对象具有相同的名称(即objectBalloon),是否会在编译器中造成任何类型的歧义 当您实例化一个对象时,它总是在某个范围内 例如: pub

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

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

  • 当您实例化一个对象时,它总是在某个范围内

    例如:

    public void DoSomething()
    {
        BalloonTip b = new BalloonTip();
    
        DoSomethingElse();
    }
    
    public void DoSomethingElse()
    {
        BalloonTip b = new BalloonTip();
    }
    
    将为您提供两个不同的BallootTip实例,它们都称为“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
    }
    

    拥有一个类的多个实例没有问题。为什么首先要在服务器端创建它?拥有两个同名变量也没有问题,只要它们由一个作用域分隔。如果变量不在同一个作用域中,则不会造成歧义。如果存在歧义,编译器无论如何都会抱怨……事实上,在同一范围内不能有两个同名的变量。编译器不允许您使用,原因很明显。