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

面试题 相关文章推荐
输入N,打印N*N矩阵
Feb 20 面试题
编写类String的构造函数、析构函数和赋值函数
May 29 面试题
.NET概念性的面试题
Feb 29 面试题
网络安全方面的面试题
Nov 04 面试题
linux面试题参考答案(11)
Nov 26 面试题
Linux如何修改文件和文件夹的权限
Sep 05 面试题
sleep()方法和wait()方法的区别是什么
Nov 17 面试题
Java里面Pass by value和Pass by Reference是什么意思
May 02 面试题
怎样声明一个匿名的内部类
Jun 01 面试题
java程序员面试交流
Nov 29 面试题
UNIX文件系统分类
Nov 11 面试题
J2EE模式面试题
Oct 11 面试题
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
15个小时----从修改程序到自己些程序
2006/10/09 PHP
一些php技巧与注意事项分析
2011/02/03 PHP
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
PHP修改session_id示例代码
2014/01/08 PHP
验证坐标在某坐标区域内php代码
2016/10/08 PHP
Javascript自定义函数判断网站访问类型是PC还是移动终端
2014/01/10 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
Node.js中的缓冲与流模块详细介绍
2015/02/11 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
AngularJS中的Directive实现延迟加载
2016/01/25 Javascript
AngularJS用户选择器指令实例分析
2016/11/04 Javascript
基于JavaScript实现自动更新倒计时效果
2016/12/19 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
2018/01/08 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
vue实现循环滚动列表
2020/06/30 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
跟老齐学Python之重回函数
2014/10/10 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
基于Tensorflow使用CPU而不用GPU问题的解决
2020/02/07 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
2020/05/16 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
2020/05/26 Python
Python datetime 如何处理时区信息
2020/09/02 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
植物选择:Botanic Choice
2017/02/15 全球购物
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
Prototype如何更新局部页面
2013/03/03 面试题
幼儿园长自我鉴定
2013/10/17 职场文书
党校学习思想汇报
2014/01/06 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
村当支部个人对照检查材料思想汇报
2014/10/06 职场文书
三行辞职书范文
2015/02/26 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
Pytorch 如何实现常用正则化
2021/05/27 Python
Golang gRPC HTTP协议转换示例
2022/06/16 Golang