构造SafeHandle
函数接受一个invalidHandleValue
. 如果IsInvalid
无论如何都必须实施,它有什么用因为它不知道哪个成员变量持有指针[我不知道它handle
为你实现了成员变量]?
问问题
299 次
2 回答
2
在 DotPeek 中查看它,我看到它仅用于初始化protected IntPtr handle
成员变量。
protected SafeHandle(IntPtr invalidHandleValue, bool ownsHandle)
{
this.handle = invalidHandleValue;
...
}
我会说这个的逻辑是这样的:
- 他们想保证
handle
成员变量被初始化为某种东西,所以他们让你传递无效的值。 - 可能还有您想要测试 in 的其他逻辑
IsInvalid
,因此它们不会费心提供默认实现(这也需要保存传递invalidHandleValue
的 ctor。)
于 2013-07-15T00:43:48.880 回答
1
handle
它是你调用时的默认值new SafeHandleDerivedClass()
(派生类可能会base.SetHandle(someValue)
在构造函数中调用,但在调用之前,值将是传入基类构造函数的任何值)。
于 2013-07-15T00:43:27.530 回答