如果我有一个包装另一个的课程,即:
public class NoWrap
{
internal sealed class Wrapped
{ //Constructor here
}
}
如何从Wrapped
类中获取NoWrap
类的实例?
答案 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();