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

面试题 相关文章推荐
请说出你所知道的线程同步的方法
Apr 19 面试题
JAVA中的关键字有什么特点
Mar 07 面试题
main 函数执行以前,还会执行什么代码
Apr 17 面试题
c语言常见笔试题总结
Sep 05 面试题
描述内存分配方式以及它们的区别
Oct 15 面试题
NULL是什么,它是怎么定义的
May 09 面试题
什么是Linux虚拟文件系统VFS
Aug 25 面试题
Linux的文件类型
Jul 05 面试题
EJB面试题
Jul 28 面试题
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Jan 27 面试题
Java语言的优势
Jan 10 面试题
介绍一下Java中的static关键字
May 12 面试题
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采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
PHP中key和current,next的联合运用实例分析
2016/03/29 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
javascript prototype原型操作笔记
2009/12/07 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
2015/04/16 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
2015/10/17 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
2016/04/18 Javascript
canvas绘制七巧板
2017/02/03 Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
2019/01/28 jQuery
Vue路由前后端设计总结
2019/08/06 Javascript
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
Python爬虫番外篇之Cookie和Session详解
2017/12/27 Python
基于循环神经网络(RNN)的古诗生成器
2018/03/26 Python
Python魔法方法详解
2019/02/13 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
Python数据处理篇之Sympy系列(五)---解方程
2019/10/12 Python
Python编程快速上手——选择性拷贝操作案例分析
2020/02/28 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
在keras 中获取张量 tensor 的维度大小实例
2020/06/10 Python
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
教师辞职报告范文
2014/01/20 职场文书
40岁生日感言
2014/02/15 职场文书
会务接待方案
2014/02/27 职场文书
教师岗位聘任书范文
2014/03/29 职场文书
蓝颜请假条
2014/04/11 职场文书
奠基仪式策划方案
2014/05/15 职场文书
调研座谈会发言材料
2014/08/23 职场文书
2014年团总支工作总结
2014/11/21 职场文书
2015年世界环境日活动总结
2015/02/11 职场文书
董事长秘书工作总结
2015/08/14 职场文书
vue项目如何打包之项目打包优化(让打包的js文件变小)
2022/04/30 Vue.js