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

面试题 相关文章推荐
线程的基本概念、线程的基本状态以及状态之间的关系
Oct 26 面试题
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
Mar 14 面试题
static关键字的用法
Oct 07 面试题
华为的Java面试题
Mar 07 面试题
*p++ 自增p 还是p所指向的变量
Jul 16 面试题
上海某公司.net方向笔试题
Sep 14 面试题
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
Apr 11 面试题
一套软件开发工程师笔试题
May 18 面试题
同步和异步有何异同,在什么情况下分别使用他们?
Dec 28 面试题
两道JAVA笔试题
Sep 14 面试题
编程用JAVA解析XML的方式
Jul 07 面试题
Shell脚本如何向终端输出信息
Apr 25 面试题
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
php URL编码解码函数代码
2009/03/10 PHP
PHP开发中常用的字符串操作函数
2011/02/08 PHP
PHP使用MPDF类生成PDF的方法
2015/12/08 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
2016/01/09 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
js里怎么取select标签里的值并修改
2012/12/10 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2013/10/24 Javascript
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
2015/06/05 Javascript
简单实现JS对dom操作封装
2015/12/02 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
2015/12/04 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
2016/03/21 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
2017/05/24 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
Python标准库与第三方库详解
2014/07/22 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
python创造虚拟环境方法总结
2019/03/04 Python
python实现对输入的密文加密
2019/03/20 Python
Python执行时间的几种计算方法
2020/07/31 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
澳大利亚窗帘商店:Curtain Wonderland
2019/12/01 全球购物
init进程的作用
2012/04/12 面试题
银行门卫岗位职责
2013/12/29 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
生死抉择观后感
2015/06/09 职场文书
幼儿园2016年圣诞活动总结
2016/03/31 职场文书
入党申请书怎么写?
2019/06/21 职场文书
Python中的min及返回最小值索引的操作
2021/05/10 Python