SafeHandle
コンストラクinvalidHandleValue
ターは. IsInvalid
とにかく実装する必要がある場合、それは何に使用されますかどのメンバ変数がポインタを保持しているかがわからないため[メンバー変数が実装されているとは知りませんでしたhandle
]?
質問する
299 次
2 に答える
2
Looking at it in DotPeek, I see that it is used only to initialize the protected IntPtr handle
member variable.
protected SafeHandle(IntPtr invalidHandleValue, bool ownsHandle)
{
this.handle = invalidHandleValue;
...
}
I'd say that the logic for this is something like:
- They want to guarantee that the
handle
member variable is initialized to something, so they make you pass the invalid value. - There might be additional logic you want to test for in
IsInvalid
, so they don't bother to provide a default implementation (which would require saving the passedinvalidHandleValue
in the ctor as well.)
于 2013-07-15T00:43:48.880 に答える
1
handle
これは、 for を呼び出すときのデフォルト値ですnew SafeHandleDerivedClass()
(派生クラスはbase.SetHandle(someValue)
コンストラクターで呼び出すことができますが、その呼び出しの前に、値は基本クラスのコンストラクターに渡されたものになります)。
于 2013-07-15T00:43:27.530 に答える