C#面试题

当前位置: 面试问题网 > C#面试题 > C#可否对内存进行直接的操作

C#可否对内存进行直接的操作

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#不能直接操作内存。当然,面试时很少会有人问起这个,这个我们只需要做简单的了解就可以了,如果不是开发的需要,没有必要深究。

【C#可否对内存进行直接的操作】相关文章

1. C#可否对内存进行直接的操作

2. 简单说下OSPF的操作过程

3. 介绍一下Oracle的操作符优化

4. 什么是虚拟内存?虚拟内存有什么优势?

5. ruby如何进行集成操作?Ruby能进行多重继承吗?

6. Python面试题:Python是如何进行内存管理的

7. 什么是Smarty变量操作符?如何使用Smarty变量操作符

8. 试解释COMMIT操作和ROLLBACK操作的语义

9. 什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议

10. 什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?

本文来源:https://www.mianshiwenti.com/a12973.html

点击展开全部

《C#可否对内存进行直接的操作》

将本文的Word文档下载到电脑,方便收藏和打印

推荐程度:

进入下载页面

﹝C#可否对内存进行直接的操作﹞相关内容

「C#可否对内存进行直接的操作」相关专题

其它栏目

也许您还喜欢