【发布时间】:2014-09-28 21:38:34
【问题描述】:
如果我有一个包装另一个类,即:
public class NoWrap
{
internal sealed class Wrapped
{ //Constructor here
}
}
如何从NoWrap 类内部获取Wrapped 类实例的句柄?
【问题讨论】:
标签: c# class wrapper unmanaged
如果我有一个包装另一个类,即:
public class NoWrap
{
internal sealed class Wrapped
{ //Constructor here
}
}
如何从NoWrap 类内部获取Wrapped 类实例的句柄?
【问题讨论】:
标签: c# class wrapper unmanaged
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();
【讨论】: