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

面试题 相关文章推荐
main 函数执行以前,还会执行什么代码
Apr 17 面试题
C++的几个面试题附答案
Aug 03 面试题
使用索引(Index)有哪些需要考虑的因素
Oct 19 面试题
.NET面试问题集
Dec 08 面试题
常用UNIX 命令(Linux的常用命令)
Jul 10 面试题
如何利用cmp命令比较文件
Apr 11 面试题
Linux文件操作命令都有哪些
Jul 23 面试题
软件测试工程师面试问题精选
Oct 28 面试题
分别介绍一下Session Bean和Entity Bean
Mar 13 面试题
Java程序员面试90题
Oct 19 面试题
介绍一下Java中标识符的命名规则
Feb 03 面试题
abstract class和interface有什么区别
Aug 04 面试题
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 UBB 解析实现代码
2011/11/27 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
php快速查找数据库中恶意代码的方法
2015/04/01 PHP
js对象关系图 方便dom操作
2012/03/18 Javascript
js onclick事件传参讲解
2013/11/06 Javascript
Node.js安装教程和NPM包管理器使用详解
2014/08/16 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面
2016/08/01 Javascript
用headjs来管理和加载js 提高网站加载速度
2016/11/29 Javascript
JS高级运动实例分析
2016/12/20 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
简单谈谈js的数据类型
2017/09/25 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
2017/12/18 Javascript
jquery实现下载图片功能
2019/07/18 jQuery
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
Python操作MySQL简单实现方法
2015/01/26 Python
浅谈Python单向链表的实现
2015/12/24 Python
python+opencv+caffe+摄像头做目标检测的实例代码
2018/08/03 Python
Python flask框架post接口调用示例
2019/07/03 Python
django的auth认证,authenticate和装饰器功能详解
2019/07/25 Python
使用TensorFlow-Slim进行图像分类的实现
2019/12/31 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
2020/04/29 Python
html5仿支付宝密码框的实现代码
2017/09/06 HTML / CSS
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
关键字throw与throws的用法差异
2016/11/22 面试题
房地产开盘策划方案
2014/02/10 职场文书
信息技术教学反思
2014/02/12 职场文书
爱情寄语大全
2014/04/09 职场文书
2015圣诞节贺卡寄语
2015/03/24 职场文书
地球上的星星观后感
2015/06/02 职场文书
React列表栏及购物车组件使用详解
2021/06/28 Javascript
Java无向树分析 实现最小高度树
2022/04/09 Javascript