通过引用传递表单对象

时间:2010-12-29 22:55:03

标签: c# parameter-passing

喂!我制作了一个完全由表格控制的小锅炉系统。但是,表单组件在类,锅炉,散热器等中调用函数。

我有一个主要类来实例化所有类,但我正在努力弄清楚如何将表单对象传递给这些类,以便他们可以访问表单的组件。

我想我应该在每个类中使用mutator方法来存储表单对象?我怎么做这个在语法上正确的呢?

谢谢! ; O)

2 个答案:

答案 0 :(得分:1)

只需将表单传递给每个class即可。将它存储在私有变量中,以便类稍后可以使用它。它默认通过引用传递。

class Boiler {
   private Form parentForm;
   public Boiler(Form f) {
       parentForm = f;
   }
}

答案 1 :(得分:1)

将引用类型传递给方法时,C#(默认情况下)会将引用的副本传递给方法。这意味着如果将您所引用的引用传递给您的类,则您将为该方法提供该引用的副本,并且由于两个副本引用同一对象,因此调用站点和方法都可以访问同一实例。

例如:

class Example
{
    static void Main()
    {
        string s = "hello, world";
        // Here we are passing a copy of the reference
        // stored in "s" to "Print"
        Print(s);
    }
    static void Print(string str)
    {
        // By default, "str" will be assigned the copy of the 
        // reference passed to this method.
        Console.WriteLine(s);
    }
}

我会小心地构建一个应用程序,在该应用程序中,您的域对象(在您的情况下,BoilerRadiator等)知道消耗它们的UI层。如果您发现需要将Form传递给其中一个域模型,那么您可能做错了。如果您向我们展示您想要实现的一个小例子,我们可以帮助您提出一个更易于维护的解决方案。