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

面试题 相关文章推荐
C面试题
Oct 08 面试题
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
Sep 16 面试题
经典c++面试题三
Jul 08 面试题
武汉东之林科技有限公司机试
Sep 17 面试题
什么是TCP/IP
Jul 27 面试题
简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
Nov 20 面试题
铭立家具面试题
Dec 06 面试题
linux下进程间通信的方式
Jan 23 面试题
如何获得EntityManager
Feb 09 面试题
方正Java笔试题
Jul 03 面试题
Exception类的常用方法
Jun 16 面试题
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
May 01 面试题
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+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
重定向实现代码
2006/11/20 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
javascript数组详解
2014/10/22 Javascript
jquery中attr和prop的区别分析
2015/03/16 Javascript
JS中this上下文对象使用方式
2016/10/09 Javascript
AngularJS用户选择器指令实例分析
2016/11/04 Javascript
js es6系列教程 - 新的类语法实战选项卡(详解)
2017/09/02 Javascript
koa源码中promise的解读
2018/11/13 Javascript
详解vue路由篇(动态路由、路由嵌套)
2019/01/27 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
2019/02/26 Javascript
vue中英文切换实例代码
2020/01/21 Javascript
vue-openlayers实现地图坐标弹框效果
2020/09/24 Javascript
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
详解Django中间件执行顺序
2018/07/16 Python
python 中的列表生成式、生成器表达式、模块导入
2019/06/19 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
Python目录和文件处理总结详解
2019/09/02 Python
python config文件的读写操作示例
2019/09/27 Python
python+mysql实现个人论文管理系统
2019/10/25 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
pytorch 多分类问题,计算百分比操作
2020/07/09 Python
如何真正的了解python装饰器
2020/08/14 Python
Move Free官方海外旗舰店:美国骨关节健康专业品牌
2017/12/06 全球购物
网页设计个人找工作求职信
2013/11/28 职场文书
上班打牌检讨书
2014/02/07 职场文书
厂办主管岗位职责范本
2014/02/28 职场文书
局火灾防控工作方案
2014/05/25 职场文书
供电工程专业求职信
2014/08/09 职场文书
干部作风建设工作总结
2014/10/29 职场文书
小学新教师个人总结
2015/02/05 职场文书
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL
插件导致ECharts被全量引入的坑示例解析
2022/09/23 Javascript