エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
あるIntPtrの変数ppに、構造体Tのポインタのポインタ、つまりC言語でいうところのT**が入っていたとしま... あるIntPtrの変数ppに、構造体Tのポインタのポインタ、つまりC言語でいうところのT**が入っていたとします。このポインタからunsafeを使わずに実体の値を得る方法です。 確認までに、C言語ではこうなります (ppの型はT**とする)。 T t = **pp; C#(というか.NET Framework)の場合は、*演算子をそのままMarshal.PtrToStructureに置き換えればOKです。 IntPtr p = (IntPtr)Marshal.PtrToStructure(pp, typeof(IntPtr)); // T* p = *pp; T t = (T)Marshal.PtrToStructure(p, typeof(T)); // T t = *p; ちょっと高速化するとこうなります。 IntPtr p = Marshal.ReadIntPtr(pp); // T