引用对象时,是否始终必须作为参数传递

时间:2013-03-01 14:01:58

标签: .net parameters

我有一个关于2个单独的类实例如何知道每个实例的问题。

我们假设我有一个空的控制台应用程序,并且我已经在2个不同的命名空间中添加了2个类。

每个班级的详细信息并不重要,因此请从我的控制台应用程序中考虑这个非常简单的代码。

public static void Main(string[] args)
{
    Namespace1.ClassName = c = new Namespace1.ClassName();
    Namespace2.ClassName2 = c2 = new Namespace2.ClassName2();
}

现在,除非我将一个实例传递给(例如)我的ClassName2的构造函数,否则c2将不知道c EG

Namespace2.ClassName2 = c2 = new Namespace2.ClassName2(c);

c2知道c没有将c作为参数传递或设置为c2的属性的其他方法。

我假设没有,但是在我澄清之后,我已经多次错了。我主要是寻找一个简单的是或否答案,但任何其他细节也值得赞赏。

2 个答案:

答案 0 :(得分:1)

我认为除了构造函数参数之外,唯一可行的方法是在ClassName2中创建属性或setter函数,然后在创建c2实例

之后设置它
Namespace2.ClassName2 c2 = new Namespace2.ClassName2();
c2.SetC(c);

从理论上讲,你也可以让班级ClassName保持静态,但这不是一个好主意

答案 1 :(得分:1)

您可以使用public static属性,因此,如果您的主要方法位于Namespace3.Program类中,您可以将其声明为:

// namespace3
public class Program {
     public static Namespace1.Classname c {get;set;}

     public static void Main(string[] args)
     {
        Pragram.c = new Namespace1.ClassName();
        Namespace2.ClassName2 c2 = new namespace2.ClassName2();
     }
} 

然后在ClassName2方法调用中

namespace3.Program.c