DOBON.NET DOBON.NETプログラミング掲示板過去ログ

.NETでのstrptrは?

分類:[全般]

はじめまして。VB6ではinputbox関数でキャンセルキーが押されたかどうかを
strptr関数を使って判断していましたが、.NETではstrptr関数が無くなって
しまいました。つまりオブジェクトのアドレス値を得たいのです。
よろしくお願いします。
■No50に返信(opencodeさんの記事)
> はじめまして。VB6ではinputbox関数でキャンセルキーが押されたかどうかを
> strptr関数を使って判断していましたが、.NETではstrptr関数が無くなって
> しまいました。つまりオブジェクトのアドレス値を得たいのです。
> よろしくお願いします。

Googleで検索したところ、次のようなページが見つかりました。元のページは無くなっているようです。

http://www.google.co.jp/search?q=cache:bfGdPcyVQRUJ:msdn.microsoft.com/vbasic/techinfo/articles/upgrade/transition/varptr.asp+strptr+.net&hl=ja&ie=UTF-8

キャッシュが消えたときのことを考え、内容を一部転写しておきます。

--------------------------------------------------
The addresses of data items can be retrieved, but retrieval must be done via calls into the CLR. This is because the CLR is normally free to move items within memory, so it needs to know when not to move the item while the address is being used. The following example retrieves the address of an object:
Dim MyGCHandle As GCHandle = _
GCHandle.Alloc _
(o, GCHandleType.Pinned)
Dim Address As Integer = _
CInt( _
MyGCHandle.AddrOfPinnedObject())
'...
MyGCHandle.Free()
'allows the _
object instance to be moved again

Allowing data items to be moved by the runtime improves the performance of the runtime.

DOBON.NET | プログラミング道 | プログラミング掲示板