在C#中考虑以下情况:
class Foo
{
public Foo() { }
}
class Foo2
{
private List<Foo> m_List = new List<Foo>();
public Foo2() { m_List.Add(new Foo); }
}
Foo2 fooInstance = new Foo2();
Foo2拥有一个包含Foo的List - 有没有内置的方法让Foo找出它包含哪个List,以及该列表属于哪个对象?换句话说,Foo可以获得对Foo2的引用,还是我必须在Foo中添加一个明确的向后引用 - 指向Foo2 - 正如我一直在做的那样?
答案 0 :(得分:3)
不,没有内置方式。 Foo实例只知道自己,其成员的公共接口以及基类的公共/受保护接口(如果有的话)。
如果您提供一些关于您正在尝试做的事情的更多背景信息,我可以为您提供替代解决方案。
答案 1 :(得分:0)
没有;这本质上是不可能的。
如果将同一个对象放在两个列表中会怎样?
答案 2 :(得分:0)
Foo
将不知道它是否包含在列表中。毕竟,列表只是对内存中某个位置的一组引用。指针与包含指针的指针之间没有任何关系。
class Foo
{
public Foo2 Parent { get; protected set; }
public Foo(Foo2 parent)
{
Parent = parent;
}
}
class Foo2
{
public Foo2()
{
List<Foo> x = new List<Foo>
{
new Foo(this)
};
}
}