获取对包含List的Object的Object的引用

时间:2011-08-11 21:29:49

标签: c# list reference

在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 - 正如我一直在做的那样?

3 个答案:

答案 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)
          };
      }
}