IntPtrとは何かわかりませんでしたが、誰かがこれを説明できますか?ありがとう
6 に答える
ポインタと同じサイズの整数です。32ビット画像では32ビット幅、64ビット画像では64ビット幅。
の管理対象ですvoid*
。
void*
C#などのマネージレイヤーで安全でないコードに頼ることなく、マネージコードで使用するためにキャストしたり、そこからキャストしたりできます。
これは、ポインターまたはハンドルを表すために使用される.NETプラットフォーム固有のタイプです。
IntPtrタイプは、サイズがプラットフォーム固有の整数になるように設計されています。つまり、このタイプのインスタンスは、32ビットハードウェアとオペレーティングシステムでは32ビット、64ビットハードウェアとオペレーティングシステムでは64ビットであると予想されます。
IntPtrタイプは、ポインターをサポートする言語で使用でき、ポインターをサポートする言語とサポートしない言語間でデータを参照する一般的な手段として使用できます。
IntPtrオブジェクトは、ハンドルを保持するためにも使用できます。たとえば、IntPtrのインスタンスは、ファイルハンドルを保持するためにSystem.IO.FileStreamクラスで広く使用されています。
(MSDSNから)
これはcおよびc++タイプのintptr_tに関するものですが、原則は同じです。 uintptr_tデータ型とは
ポインタサイズのブラックボックス。安全でないコード/ポインターをサポートしていない言語があるため、APIでIntPtrを使用する必要がある場合があります。
.net 2以降、そのユースケースの多くが安全なハンドルにより適しているため、その使用は減少していると思います。