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...

面试题 相关文章推荐
函数指针的定义是什么
Aug 14 面试题
编写类String 的构造函数、析构函数和赋值函数
Sep 09 面试题
金蝶的一道SQL笔试题
Dec 18 面试题
Oracle快照(snapshot)
Mar 13 面试题
什么是命名空间(NameSpace)
Nov 24 面试题
什么是URL
Dec 13 面试题
RIP版本1跟版本2的区别
Dec 30 面试题
某公司C#程序员面试题笔试题
May 26 面试题
shell程序中如何注释
Jan 28 面试题
传统软件工程与面向对象的软件工程有什么区别
May 31 面试题
Python中如何定义一个函数
Sep 06 面试题
J2EE系统只能是基于web
Sep 08 面试题
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
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
php数组对百万数据进行排除重复数据的实现代码
2010/06/08 PHP
php下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
PHP设计模式之装饰者模式
2012/02/29 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
2013/05/10 PHP
PHP远程采集图片详细教程
2014/07/01 PHP
php构造函数的继承方法
2015/02/09 PHP
用php+ajax新建流程(请假、进货、出货等)
2017/06/11 PHP
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
2013/04/09 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
页面按钮禁用与解除禁用的方法
2014/02/19 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
Function.prototype.apply()与Function.prototype.call()小结
2016/04/27 Javascript
js的三种继承方式详解
2017/01/21 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
2017/02/10 Javascript
微信小程序自定义底部导航带跳转功能
2018/11/27 Javascript
javascript获取select值的方法完整实例
2019/06/20 Javascript
python使用sorted函数对列表进行排序的方法
2015/04/04 Python
详解Python中的相对导入和绝对导入
2017/01/06 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
2019/06/19 Python
Python异常处理例题整理
2019/07/07 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
HUGO BOSS美国官方网上商店:世界知名奢侈品牌
2017/08/04 全球购物
统计每一学生的平均成绩
2014/06/06 面试题
运动会开幕式主持词
2014/03/28 职场文书
工地安全标语
2014/06/07 职场文书
个人查摆剖析材料
2014/10/04 职场文书
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
2021/05/29 MySQL
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript