我有一个关于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
的属性的其他方法。
我假设没有,但是在我澄清之后,我已经多次错了。我主要是寻找一个简单的是或否答案,但任何其他细节也值得赞赏。
答案 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