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

面试题 相关文章推荐
怎样创建、运行java程序
Aug 01 面试题
JAVA和C++的区别
Oct 06 面试题
C/C++程序员常见面试题二
Nov 19 面试题
介绍一下#error预处理
Sep 25 面试题
使用索引有什么好处
Jul 27 面试题
什么情况下你必须要把一个类定义为abstract的
Jan 06 面试题
网络方面基础面试题
Nov 16 面试题
const和static readonly区别
May 20 面试题
易程科技软件测试笔试
Mar 24 面试题
软件生产职位结构化面试主要考察要素及面试题库
Jun 12 面试题
Java中会存在内存泄漏吗,请简单描述
Dec 22 面试题
Ruby如何定义一个类
Oct 08 面试题
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替换字符串中间字符为省略号的方法
2015/05/04 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
2016/04/11 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
JS日历 推荐
2006/12/03 Javascript
用JTrackBar实现的模拟苹果风格的滚动条
2007/08/06 Javascript
Javascript无阻塞加载具体方式
2013/06/28 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
JavaScript显示表单内元素数量的方法
2015/04/02 Javascript
js获取本机操作系统类型的两种方法
2015/12/19 Javascript
js省市县三级联动效果实例
2020/04/15 Javascript
教你JS中的运算符乘方、开方及变量格式转换
2016/08/09 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
使用vue-aplayer插件时出现的问题的解决
2018/03/02 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
Puppet的一些技巧
2018/09/17 Javascript
脚手架vue-cli工程webpack的基本用法详解
2018/09/29 Javascript
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
[03:40]2014DOTA2国际邀请赛 B神专访:躲箭真的很难
2014/07/13 DOTA
Python简单格式化时间的方法【strftime函数】
2016/09/18 Python
python操作 hbase 数据的方法
2016/12/18 Python
python 读取DICOM头文件的实例
2018/05/07 Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
2018/12/11 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
2020/02/15 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
2020/06/11 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
html5 css3 动态气泡按钮实例演示
2012/12/02 HTML / CSS
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
新驾驶员个人自我评价
2014/01/03 职场文书
社区中秋节活动方案
2014/01/29 职场文书
教师岗位聘任书范文
2014/03/29 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书