这里不介绍unsafe的理论,这里单单介绍它的用法。如果要了解的更具体,可以看这篇大神的博文:C#通过指针操作图像

先从一个很简单的例子介绍:

       private void TestInptr()
{
unsafe
{
byte a = 100;
byte* p = &a;
p = &a;
Console.WriteLine("修改前a=" + *p);
a = 200;//修改后再输出
Console.WriteLine("修改后a=" + *p);
(*p)++;//通过指针修改a
Console.WriteLine("Value:" + *p);
}
}
修改前a=100
修改后a=200
Value:201

操作字节数组

        private unsafe void TestInptr2(byte[] bufferB)
{
Stopwatch sw = new Stopwatch();
sw.Start();
fixed (byte* p = bufferB)//指向托管变量的指针需要放在fixed里面,bufferB存放在堆中
{
for (int i = 0; i < bufferB.Length; i++)
{
*(p + i) = 200;
}
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
}

如果是修改大小为2592*1944大小的字节数组,需要30ms的时间。

最新文章

  1. ng-class结合三目运算
  2. 【好玩】将js代码转为日式表情
  3. C# using 三种使用方式 C#中托管与非托管 C#托管资源和非托管资源区别
  4. Windows下git使用代理服务器的设置方法
  5. C/C++数组名与指针的区别详解
  6. opencv 手写选择题阅卷 (四)Android端 手机应用开发
  7. Nginx配置文件变量大全
  8. JavaSE replaceAll 方法
  9. apache config directive &ndash; order, allow, deny
  10. 原生Js 两种方法实现页面关键字高亮显示
  11. Netty 学习系列
  12. jquery第一篇
  13. Vue获取dom和数据监听
  14. Jmeter使用之-断言
  15. 【python】time和datetime的strptime不是线程安全的!
  16. thinkphp error:no database select
  17. MenOS
  18. 模板引擎之jade 学习
  19. 七,apache配置域名
  20. 对象.isdigit() ,只能判断全是数字的字符串

热门文章

  1. mysql 重复执行创建表、新增字段脚本
  2. 第六十九篇:vue项目的运行过程
  3. CAD问题
  4. 使用verdaccio+docker搭建npm私有仓库以及使用
  5. 【读书笔记】C#高级编程 第五章 泛型
  6. 利用京东云Web应用防火墙实现Web入侵防护
  7. 使用 MAUI 在 Windows 和 Linux 上绘制 PPT 的图表
  8. SonarQube支持Gitlab授权登录
  9. 【面试题】Vue2动态添加路由 router.addRoute()
  10. 微信小程序第三方授权登录