public Class A
{
public string Name { get; set; }
}
public Class B
{
A obj1 = new A();
obj.Name = "ABCDEFGH";
}
public Class C
{
A obj2 = ...
}
如何将obj1的引用传递给obj2。这样在这种情况下也可以访问obj1的所有数据(例如Name)?
答案 0 :(得分:0)
您可以这样做:
public class B
{
A obj1 = new A();
public void Foo()
{
A obj1 = new A();
obj1.Name = "ABCDEFGH";
C c = new C(obj1);
}
}
public class C
{
A obj2;
// Constructor is called when created
public C(A a) => obj2 = a; // obj2 will now have the same reference
}
这称为依赖注入。每当我们使用new
关键字时,就会调用构造函数。当我们这样做时,我们必须传递对A
的引用。
现在,obj2
和obj1
都指向A
的相同实例,因此,如果Name
再次被更改,则两个类都将观察到该更改。
请记住,类C
的所有实例可能不共享obj2
的相同实例。这将取决于它们在构造函数中给出的内容。
答案 1 :(得分:-1)
有几件事要考虑:
尽管如此,一般来讲,您应该在A类之外实例化X1并将其传递给其构造函数,以便可以克隆它并将其传递给B类的构造函数。请注意,如果您说过,天真的克隆X1可能会导致意外结果,因为列表是其属性之一(因为X1和X2都将指向相同的列表,而不是每个都拥有相同的列表)。
还有其他选项,例如使用只读界面,但我需要更多细节。
echo "/gpx/trk/name=MyTrack1" | awk 'match($0,/=.*$/){print substr($0,RSTART+1,RLENGTH-1)}'