原来C#不仅仅支持和C/C++中指针(或者说是引用)很像的委托delegate,还支持在unsafe代码块中使用指针,从而写非托管的代码(人为不让垃圾回收机制来管理相应的内存)。在unsafe中就可以使用指针,基本用法和C++差不多(果然是一家人,哈哈)。

在用指针调用数组的时候需要使用fixed语句(只能在unsafe语句块中使用)来固定指针变量的初始值,否则可能被垃圾回收机制改变指针变量的值,fixed语句可以禁止垃圾回收机制重定位可移动的变量。

fixed语句中可以设置指向托管变量的指针,并且执行该语句期间可以固定某变量。

基本语法

   fixed (<需要固定的变量>)

     {   <fixed语句块,内部可以用指针对托管变脸操作>   }

下面上一个操作数组的简单例子:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Collections.Generic; namespace CsharpStudy
{ class Program
{ static void Main(string[] args)
{
/************Main function***************/ unsafe
{
int[] list = new int[]{, , }; fixed (int* p = list)
{
for (int i = ; i < ; i++)
{
Console.WriteLine(*(p + i));
} }
} /****************************************/
Console.WriteLine();
Console.ReadKey();
}
} }

例子的结果图是

注意,在VS中运行unsafe的代码的时候需要在project的属性中找到bulid,勾选允许非安全的代码这一项。

最新文章

  1. CSS 常用基本功能整理
  2. grub4dos
  3. PhoneGap--001 入门 安装
  4. loadrunner解决“服务器正在运行中”方法
  5. CI 框架隐藏index.php-ubuntu
  6. 搭建Nginx(负载均衡)+Redis(Session共享)+Tomcat集群
  7. BILL.WEI]stimulsoft reports 中panel 妙用
  8. Alljoyn 概述(3)
  9. 【技术翻译】支持向量机简明教程及其在python和R下的调参
  10. 201621123050 《Java程序设计》第8周学习总结
  11. 【easy】107. Binary Tree Level Order Traversal II 按层输出二叉树
  12. php ip2long负数的问题
  13. An error occurred. Sorry, the page you are looking for is currently unavailable. Please try again later.
  14. 笔记02 linux的一些命令sed
  15. jupyter安装,修改登录密码,启动
  16. 4710: [Jsoi2011]分特产
  17. [整理]Node入门 &#187; 一本全面的Node.js教程 - Demo实践所遇到的问题
  18. jQueryEasyUi行编辑打造增删改查
  19. Unity工程3D和2D开发模式切换
  20. content: &quot;\e600&quot;

热门文章

  1. Express配置ssl证书,为网站开启https
  2. for_each使用方法详解
  3. Android笔记(二十四) Android中的SeekBar(拖动条)
  4. OpenStack 2014.1(Icehouse) 更新说明
  5. 容器自动化(一):docker基础(上)
  6. redis高可用之sentinel哨兵
  7. Alpha版本发布
  8. MySQL 是怎样运行的:从根儿上理解 MySQL:字符集和比较规则
  9. ubuntu安装anaconda3+tensorflow(cpu)+pycharm(windows几乎一样)
  10. k8s的pod的资源调度