游戏开发论坛

 找回密码
 立即注册
搜索
查看: 15440|回复: 29

发布一个小作品-为VB.NET/C#提供非托管指针支持

[复制链接]

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2006-7-31 20:29:00 | 显示全部楼层 |阅读模式
VB系列中对指针的支持很差,这也是长期以来VB用户的遗憾之一。

这是我最近的一个工具作品,用它可以创建一些常用数据类型的非托管指针,并对其进行操作
能够非常方便的使用非托管指针。并且类库完全注释过,在编程时可以看到所有参数或方法的说明。
希望这个类库能给广大喜爱指针的朋友(仅限vb.net 2005和c# 2005)带来便利
特点:
创建完全非托管的指针(在进程非托管内存块中创建),对象在销毁时自动释放在创建时申请的内存。提供了大量自定义操作符,方便操作。
为了防止内存泄漏,指针一旦创建,则无法再改变Pointer属性。
通过Value属性,简单、快捷并且安全的操作指针指向的内存。

在用指针来实例化类的时候要注意(用的new (ptr as Intptr)方法),所传递的指针必须非零,并且,最好不要指向不是用本工具所创建的指针指向内存,千万不要指向一个自己不知道干什么的内存,以免造成崩溃。特别是ByteP类型。

虽然本人并不是很清楚,非托管指针在.net中有什么作用,不过可以扩展.net功能还是不错的,释放.net的能量

正在考虑是否要加入对托管的方法创建非托管的过程/函数指针。

现在所支持的指针:
1、几乎所有整数类型(Int8,Int16,Int32,Int64)
2、8位无符号整数数组(Byte())
3、字符串
4、任意可序列化托管对象(Object)

指针类名称:
一般来说是原类型后面加个P,例如,32位整数就是Int32P或者IntegerP,字符串就是StringP
例外:Byte则为Int8P,而ByteP则是Byte的数组,ObjectP为任何可序列化对象指针

创建指针例子:
先引用附件中的类库,然后Imports Pointerdotnet
一个Integer指针:
Dim Ptr as new Int32P
或者 dim Ptr as new Int32p(intptr) 参数为一个指针
Ptr.Pointer即可得到这个整数指针类所创建的指针(Intptr类型,用其ToInt32方法可取得用Int表示的内存地址)
用Ptr.Value=123,则可对该指针指向的整数赋值

对所有整数类型指针我还加入了常用操作符的支持(+,-,*,/,\,^,mod,>=,<=,=,<>),方便大家使用,例子:
dim Ptr as new Int32P
ptr.value=3
dim ptr2 as Int32P
ptr2=ptr+5
那么Ptr2.Value就等于8
或者:
dim Ptr as new Int32P
ptr.value=3
dim ptr2 as new Int32P
ptr2.value=5
dim ptr3 as int32p
ptr3=ptr+ptr2
那么ptr3.value就等于8

对于字符串指针,我加入了一些常用操作,例如 用+,&来合并字符串,例子
dim ptr as new StringP
ptr.value="test"
ptr=ptr+" test2" (或者ptr & " test2",一样的)
那么ptr.value就是"test test2"
加号右边跟整数型一样,可以是指针

最后对ObjectP的说明:
这个类可以创建所有可序列化的对象的指针,例子
dim obj as new arraylist
dim ptr as new ObjectP(obj)
那么ptr.value就是obj这个对象,ptr.pointer就是所创建的指针(内存地址)。


希望这个指针类能给大家带来帮助

sf_200673120293.rar

25.23 KB, 下载次数:

1

主题

23

帖子

25

积分

注册会员

Rank: 2

积分
25
发表于 2006-7-31 20:57:00 | 显示全部楼层

Re:发布一个小作品-为VB.NET/C#提供非托管指针支持

什么破玩意, 以为写个Demo就证明net可以做游戏, 学C好不好.

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
 楼主| 发表于 2006-7-31 21:01:00 | 显示全部楼层

Re:发布一个小作品-为VB.NET/C#提供非托管指针支持

我这个是写给认识.net用的,而不是写给你这个只会冒充别人的垃圾看的~
另外,我这个不是demo~

1

主题

23

帖子

25

积分

注册会员

Rank: 2

积分
25
发表于 2006-7-31 21:14:00 | 显示全部楼层

Re:发布一个小作品-为VB.NET/C#提供非托管指针支持

我是不懂,我是策划.

3

主题

159

帖子

159

积分

注册会员

Rank: 2

积分
159
发表于 2006-8-1 22:05:00 | 显示全部楼层

Re:发布一个小作品-为VB.NET/C#提供非托管指针支持

不用换卡也能改MAC的

103

主题

1432

帖子

1458

积分

金牌会员

Rank: 6Rank: 6

积分
1458
QQ
发表于 2006-8-2 00:13:00 | 显示全部楼层

Re:发布一个小作品-为VB.NET/C#提供非托管指针支持

非托管指针。这个东西又用么?

33

主题

128

帖子

128

积分

注册会员

Rank: 2

积分
128
发表于 2006-8-2 10:38:00 | 显示全部楼层

Re: 发布一个小作品-为VB.NET/C#提供非托管指针支持

改mac只用一秒钟就够了

1

主题

86

帖子

86

积分

注册会员

Rank: 2

积分
86
发表于 2006-8-2 10:51:00 | 显示全部楼层

Re:发布一个小作品-为VB.NET/C#提供非托管指针支持

很多简单的东西到了vb.net里就变得很复杂, 所以我不支持这种语言.

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
 楼主| 发表于 2006-8-2 16:39:00 | 显示全部楼层

Re:发布一个小作品-为VB.NET/C#提供非托管指针支持

说得就像vb6里用指针很方便一样

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2006-8-2 19:54:00 | 显示全部楼层

Re: Re:发布一个小作品-为VB.NET/C#提供非托管指针支持

游戏之家4代: Re:发布一个小作品-为VB.NET/C#提供非托管指针支持

很多简单的东西到了vb.net里就变得很复杂, 所以我不支持这种语言.


请举列说明,哪些地方在VB.net里变得很复杂了? [em24]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-9 14:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表