C#可否对内存进行直接的操作


Posted in 面试题 onFebruary 26, 2015
C#可以直接对内存进行操作。但是默认情况下,为了保持类型安全,C#不支持指针运算。不过,通过使用 unsafe 关键字,可以定义可使用指针的不安全上下文。在不安全的上下文中,类型可以是指针类型以及值类型或引用类型。指针类型声明具有下列形式之一:
unmanaged type* identifier;
void* identifier;
参数说明:
unmanaged type:
sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal 或 bool。
任何枚举类型。
任何指针类型。
仅包含非托管类型的字段的任何用户定义的结构类型。
identifier
指针变量名称。
指针类型不继承 object,并且指针类型与 object 之间不存在转换。此外,装箱和取消装箱不支持指针。但是,允许在不同指针类型之间以及指针类型与整型之间进行转换。
当在同一个声明中声明多个指针时,* 仅与基础类型一起使用,而不是作为每个指针名称的前缀。例如:
int* p1, p2, p3; // Ok
int *p1, *p2, *p3; // Invalid in C#
因为垃圾回收器不知道关于指针的任何信息,指针不能指向引用或包含引用的结构,但知道关于引用的信息。
myType* 类型的指针变量的值是 myType 类型的变量的地址。
下面是指针类型声明的示例:
示例 说明
int* p p 是指向整数的指针
int** p p 是指向整数的指针的指针
int*[] p p 是指向整数的指针的一维数组
char* p p 是指向字符的指针
void* p p 是指向未知类型的指针
因为C#为了提高安全型,默认是运行在托管代码下的,在我们正常的企业mis开发中很少会有用到非托管代码的情况,致使大部分c#初学者误以为C#不能直接操作内存。当然,面试时很少会有人问起这个,这个我们只需要做简单的了解就可以了,如果不是开发的需要,没有必要深究。

Tags in this post...

面试题 相关文章推荐
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
Aug 04 面试题
什么是Deployment descriptors;都有什么类型的部署描述符
Jul 28 面试题
JRE、JDK、JVM之间的关系怎样
May 16 面试题
关于Java String的一道面试题
Sep 29 面试题
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
Mar 19 面试题
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
Apr 03 面试题
命名空间(namespace)和程序集(Assembly)有什么区别
Sep 25 面试题
const和static readonly区别
May 20 面试题
一些关于MySql加速和优化的面试题
Jan 30 面试题
int和Integer有什么区别
May 25 面试题
Unix如何添加新的用户
Aug 20 面试题
描述JSP和Servlet的区别、共同点、各自应用的范围
Oct 02 面试题
C#中有没有静态构造函数,如果有是做什么用的?
Jun 04 #面试题
一套C#面试题
Oct 09 #面试题
在C#中如何实现多态
Jul 02 #面试题
使用C#编写创建一个线程的代码
Jan 22 #面试题
编程实现去掉XML的重复结点
May 28 #面试题
如何在C# winform中异步调用web services
Sep 21 #面试题
静态成员和非静态成员的区别
May 12 #面试题
You might like
用来解析.htgroup文件的PHP类
2012/09/05 PHP
php递归遍历删除文件的方法
2015/04/17 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
收藏一些不常用,但是有用的代码
2007/03/12 Javascript
jQuery文本框(input textare)事件绑定方法教程
2013/04/24 Javascript
用jquery生成二级菜单的实例代码
2013/06/24 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
vue中echarts3.0自适应的方法
2018/02/26 Javascript
JS中数据结构之栈
2019/01/01 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
Vant 中的Toast设置全局的延迟时间操作
2020/11/04 Javascript
[01:19]2014DOTA2国际邀请赛 采访TITAN战队ohaiyo 能赢DK很幸运
2014/07/12 DOTA
在Python中使用全局日志时需要注意的问题
2015/05/06 Python
Python的time模块中的常用方法整理
2015/06/18 Python
Python实现配置文件备份的方法
2015/07/30 Python
Python 判断是否为质数或素数的实例
2017/10/30 Python
python 集合 并集、交集 Series list set 转换的实例
2018/05/29 Python
解决python 文本过滤和清理问题
2019/08/28 Python
Python通过cv2读取多个USB摄像头
2019/08/28 Python
python3 tcp的粘包现象和解决办法解析
2019/12/09 Python
详解Python openpyxl库的基本应用
2021/02/26 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
设置器与访问器的定义以及各自特点
2016/01/08 面试题
《灯光》教学反思
2014/02/08 职场文书
疾病捐款倡议书
2014/05/13 职场文书
初中毕业典礼演讲稿
2014/09/09 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
音乐之声观后感
2015/06/04 职场文书
新闻通讯稿模板
2015/07/22 职场文书
pytorch DataLoader的num_workers参数与设置大小详解
2021/05/28 Python
SQL实现LeetCode(175.联合两表)
2021/08/04 MySQL