英語で読む

次の方法で共有


GCHandleType 列挙型

定義

型が割り当てることができるハンドルの種類を GCHandle 表します。

C#
public enum GCHandleType
C#
[System.Serializable]
public enum GCHandleType
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum GCHandleType
継承
GCHandleType
属性

フィールド

名前 説明
Normal 2

この種類のハンドルは、非透過ハンドルを表します。つまり、このハンドルを使用して、その中に格納されている固定化されたオブジェクトのアドレスを解決することはできません。 この種類のハンドルは、オブジェクトを追跡し、ガベージ コレクターによって収集されないようにするために使用できます。 マネージド オブジェクトへの、ガベージ コレクターが検出できない唯一の参照をアンマネージド クライアントが保持している場合、この列挙体メンバーを使用すると便利です。

Pinned 3

この種類ハンドルは Normal に似ていますが、このハンドルを使用した場合は、固定オブジェクトのアドレスを取得できます。 これにより、ガベージ コレクターがそのオブジェクトを移動できなくなるため、ガベージ コレクターの効率は低下することになります。 割り当てられたハンドルをできる限り早く解放するには、Free() メソッドを使用します。

Weak 0

この種類のハンドルはオブジェクトを追跡するために使用しますが、そのオブジェクトを収集できるようにもします。 オブジェクトが収集された場合、GCHandle インスタンスの内容は 0 に設定されます。 Weak 参照はファイナライザーの実行前に 0 に設定されるため、ファイナライザーがそのオブジェクトを復活させた場合でも、Weak 参照は 0 のままになります。

WeakTrackResurrection 1

この種類のハンドルは Weak に似ていますが、ファイナライズ中にオブジェクトが復活された場合でも、このハンドルは 0 には設定されません。

適用対象

製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

こちらもご覧ください