在VB.net中如何取变量、结构、数组、函数的地址?

在VB6中可以取变量、结构、数组、函数的地址,那么在VB.net中能不能取到变量、结构、数组等的地址?表示还没接触这门新语言,求详解

当然可以的,需要System.Runtime.InteropServices 命名空间中的 Marshal 类

Imports System.Runtime.InteropServices '这里一定要有 
Public Class Form1
    Public Structure m_Point
        Dim x As Integer
        Dim y As Integer
    End Structure
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim i As Integer = 50
        Dim ai() As Integer = {1, 2, 3, 4, 5}
        Dim pi As IntPtr = GCHandle.Alloc(i, GCHandleType.Pinned).AddrOfPinnedObject() '取得整形变量的指针 
        Dim pai As IntPtr = GCHandle.Alloc(ai, GCHandleType.Pinned).AddrOfPinnedObject() '取得整形数组首地址指针

        MsgBox(Marshal.ReadInt32(pi, 0)) '读回整形变量指针指向的值
        MsgBox(Marshal.ReadInt32(pai, 0 * 4)) '读回数组的第一个元素
        MsgBox(Marshal.ReadInt32(pai, 1 * 4)) '读回数组的第二个元素
        MsgBox(Marshal.ReadInt32(pai, 2 * 4)) '读回数组的第三个元素

        '-----下面是结构--------------------------
        Dim m_p As New m_Point
        m_p.x = 100
        m_p.y = 50
        Dim pm_p As IntPtr = GCHandle.Alloc(m_p, GCHandleType.Pinned).AddrOfPinnedObject() '取得结构首地址指针 
        MsgBox(Marshal.ReadInt32(pm_p, 0 * 4)) '读回结构的第一个值
        MsgBox(Marshal.ReadInt32(pm_p, 1 * 4)) '读回结构的第二个值
    End Sub
End Class

温馨提示:内容为网友见解,仅供参考
无其他回答

在VB.net中如何取变量、结构、数组、函数的地址?
GCHandleType.Pinned).AddrOfPinnedObject() '取得整形数组首地址指针 MsgBox(Marshal.ReadInt32(pi, 0)) '读回整形变量指针指向的值 MsgBox(Marshal.ReadInt32(pai, 0 * 4)) '读

VB如何获取数组地址
解决方法:可以使用byref声明为整型变量直接将变量地址传过去就好,不用声明为什么指针的。或者可以试试下面这个:GCHandle 类的 AddressOfPinnedHandle 方法可以提供类似的功能.

在vb.net如何获取特位置的字符
首先找到第五行,就是找vbcrlf,然后找第三个数,就是找逗号 有两种办法,一种是纯字符串处理的办法,另一种是使用数组的办法,两种方法都很简单 纯字符串处理的办法适用于任何情况下,而使用数组因性能问题,只适用于源字符串不太大的情况下 使用数组的办法:'所有字符串 Dim dString As String = "" '...

求VB.NET获取文件路径的方法
Dim my_path() As String = System.IO.Directory.GetFiles("d:\\", "文件名", IO.SearchOption.AllDirectories)因为有可能在多个地方,所以进行了全盘搜索,歌曲的所有地址路径在数组my_path中

请问在vb.net中如何实现随机取数??
Dim k() As Integer = New Integer() {1, 2, 3, 4, 5, 6} Dim p1 As Integer Random r = new Random();int p1 = k(r.Next(5)) '随机出现0~5之间的数。

vb.net 定义变量 ,类型,对象问题?
在.NET中,对象和结构还是有些不同的,定义方式也是其中之一。像整型、字符串和一些数值类型都属于结构。结构只需要这样定义就可以了:Dim str As String 系统自动分配内存,然后就可以对它进行访问了。如果像这样声明普通类:Dim cla As Class 此时直接访问cla类成员会引发一个null异常。因为你仅仅声明...

在VB.NET编程中使用数组
1. 在Visual Basic .Net中申明一个数组,其数组元素中的索引值的起点全部都为“0”,而不是以前Visual Basic中的索引值起点一般都为“1”。这种定义方法和Visual Basic .Net的孪生姐妹Visual C#非常相似。2. 由于在Visual Basic .Net中数组都有了统一的起点,所以在Visual Basic .Net中定义一个数组,也就不再...

vb.net如何在数组中查找数组?
Dim astr As String = ByteArrayToString(a)Dim bstr As String = ByteArrayToString(b)Dim index As Integer = astr.IndexOf(bstr) '这个index就是b数组在a数组的位置,下标从0开始,不过记得处理下逗号,因为这时候是字符串。'''如果index小于0说明没有匹配内容End Sub 现在说明下ByteArray...

VB.net中任何提取文本文件中的逗号分格数据?
用数组呗。我是用VB6的,不过你会.NET也肯定能看懂。不是文本文件么?先用Line Input读每行存入数组。再把每行数据用你的","分割,就可以查询了。我写个简单的例子:'搜索函数,用法Search(标头,序号),返回数据.Private Function Search(ByVal Section As String, ByVal Index As Integer) As ...

VB.NET 如何获取网页中的数据
Public Function webCaptureContent(ByVal mWebsiteUrl As String, ByVal mWebsiteType As Boolean) As String '启动一次具体的数据采集工作,返回采集到的HTML内容:要求必须输入带:\/\/的全地址数据 On Error Resume Next Dim Str_WebContent As String = "请输入查找网站地址."Dim wb As WebClient =...

相似回答