我需要从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;
}
答案 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属性并将其指向子对象。如果您希望子对象知道它的父对象,那么您必须通过向子对象提供父对象(例如,在构造函数中)来自己明确地执行此操作。