如何处理包装类

时间:2014-09-28 21:38:34

标签: c# class wrapper unmanaged

如果我有一个包装另一个的课程,即:

public class NoWrap
{
  internal sealed class Wrapped
  { //Constructor here
  }
}

如何从Wrapped类中获取NoWrap类的实例?

1 个答案:

答案 0 :(得分:0)

Wrapped类的实例仅在您明确创建时才会出现。在创建NoWrap时,它不会自动开始存在。例如:

public class NoWrap
{
    internal sealed class Wrapped
    {
    }

    public void Wrap()
    {
        this.wrapped = new Wrapped();
    }

    internal Wrapped GetWrapped()     //note: cannot be public
    {
        return wrapped;
    }

    private Wrapped wrapped;
}

//...

NoWrap nw = new NoWrap();  // (*)

nw.Wrap();                 // (**)

在标有(*)的点上存在NoWrap的一个实例,而没有Wrapped的实例。只有在{**}中调用Wrap之后,才会创建Wrapped的实例,并且您是否有引用它的事实完全取决于您 - 即您必须将其分配给一些变量/字段/属性。

要在NoWrap类之外使用它:

NoWrap.Wrapped x = nw.GetWrapped();