| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1689 人关注过本帖
标题:请问C#里有指针操作吗?请详细说一下.谢谢!!
只看楼主 加入收藏
jingzhao22visa
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2006-8-10
收藏
得分:0 

指针是特殊类型的变量。运行库支持三种指针:托管指针、非托管指针和非托管函数指针。

托管指针,也就是托管堆上的对象的句柄,是可用于托管应用程序的新型指针。托管指针指向公共语言运行库堆的托管内存块。自动垃圾回收即是在该堆上执行的。托管指针是为通过引用传递的方法参数而产生的。某些语言提供了产生托管指针的其他方式。只有托管指针才符合 CLS。

Note注意

Visual C++ 2002 和 Visual C++ 2003 中用 __gc * 来声明托管指针。在 Visual C++ 2005 中则被替换为 ^,例如 ArrayList^ al = gcnew ArrayList();

非托管指针是指向标准 C++ 堆的托管内存块的传统 C++ 指针。由于非托管指针不是公共语言规范 (CLS) 的一部分,您的语言可能不提供定义或访问这些类型的语法。有关非托管指针的支持信息,请参见关于您的语言的文档。

非托管函数指针也是传统 C++ 指针,指向函数的地址。CLS 提供了委托作为非托管函数指针的托管替代内容。

不需要显式定义指针类型。在声明指针时,就确定了指针类型所需的所有信息。

当指针类型为引用类型时,指针类型的值不是对象,而且无法从这样的值确定准确的类型。

通用类型系统对指针类型提供了两种对于类型安全的操作:从指针引用的位置加载值以及向该位置写入值。这些对于类型安全的操作是符合 CLS 的。

通用类型系统还对指针类型提供了三种基于字节的地址算法操作:向指针加上整数,从指针减去整数,以及从一个指针减去另一个指针。前两种算法操作的结果将返回一个与原指针同样类型的值。这些基于字节的操作是不符合 CLS 的。

摘自msdn


2006-11-21 09:19
CrazyWeed0907
Rank: 2
等 级:新手上路
威 望:5
帖 子:1385
专家分:0
注 册:2006-5-30
收藏
得分:0 

看出来了,楼上的mm非常爱学习哦


“十步杀一人,千里不留行。事了拂衣去,深藏身与名。”
2006-11-21 10:03
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 
unsafe

此号自封于2006年11月30日
2006-11-21 10:09
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
收藏
得分:0 

C#里是可以使用指针的,在需要有些直接访问内存和性能优先的场合,还有比如需要指针作为参数的WIN API,这些地方就得使用指针。
使用指针时候需要把类,函数,块定义为UNSAFE。属性也可以定义为UNSAFE,局部变量不可以定义为UNSAFE
比如:
unsafe class Test
{
unsafe int *test;
unsafe double *testa,tesb;//这两个都是DOUBLE类型指针
//...
}
unsafe int fTest()
{
//...
}
unsafe
{
//...
}
还有就是如果创建类成员指针需要FIXED
Class Test
{
public int test;
}
fixed(int *t=&(Test.test))
{
//...
}
之后就像以前一样使用指针了!


老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2006-11-21 12:41
swc
Rank: 3Rank: 3
等 级:论坛游民
威 望:6
帖 子:394
专家分:83
注 册:2006-4-7
收藏
得分:0 
发现了好文章,顶一下!

实践、学习、再实践、再学习......
2007-01-29 01:33
wangchen223
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2006-7-1
收藏
得分:0 
哦,我还以为没有呢,呵呵。

2007-01-29 11:57
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
有的,好像书都提到过的吧...

飘过~~
2007-01-29 12:44
caoding
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-1-29
收藏
得分:0 

C#的优点之一就是避免了指针的运算,它的许多功能都是用到了指针,只是不再想TC那样 *p 指来指去,举个例子,委托就是很好的把指针指向了另外一个方法,多人性化啊

2007-01-29 15:00
鸟铳
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-1-31
收藏
得分:0 
有,但只能指定为不安全代码
2007-01-31 15:58
快速回复:请问C#里有指针操作吗?请详细说一下.谢谢!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015202 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved