访问结构中包含的类对象

时间:2015-05-06 19:46:33

标签: c# struct

我需要从struct中访问包含类对象。结构有没有办法访问"这个"它的成员包含类?

我已经尝试将其传递到结构中,但它显然不起作用,因为在字段初始化时我无法访问"这个"包含类中的关键字。我不想通过"这个"在使用包含类的构造函数时。我需要能够在字段初始化期间传递它或在结构中进行处理。

我已经看过一些关于TypedReference的提及,但不确定该去哪里。

我想要完成的一般想法是:

public class Test
{
     internal StructType<Test> _fieldName = new StructType(this);
}

public struct StructType<ParentT>
{
     public StructType(ParentT parent)
     {
          _parent = parent;
     }
     internal ParentT _parent;
}

1 个答案:

答案 0 :(得分:2)

您不能使用this进行字段初始化,因此您必须在构造函数中初始化。类似的东西:

public class Test
{
    internal StructType<Test> _fieldName;

    public Test()
    {
        _fieldName = new StructType<Test>(this);
    }
}

public struct StructType<ParentT>
{
    public StructType(ParentT parent)
    {
        _parent = parent;
    }

    internal ParentT _parent;
}

对于“包含类对象”,C#中没有这样的特殊概念。如果希望对象保存对另一个对象的引用,则添加field属性并将其指向子对象。如果您希望子对象知道它的父对象,那么您必须通过向子对象提供父对象(例如,在构造函数中)来自己明确地执行此操作。