文章目录

  • 一、有指针时,需要使用 unsafe 修饰符时
  • 二、使用指针检索数据值
  • 三、传递指针作为方法的参数
  • 四、使用指针访问数组元素
  • 五、编译不安全代码

当一个代码块使用 unsafe 修饰符标记时,C# 允许在函数中使用指针变量。 不安全代码或非托管代码是指使用了指针变量的代码块。

一、有指针时,需要使用 unsafe 修饰符时


二、使用指针检索数据值

可以不用声明整个方法作为不安全代码,只需要声明方法的一部分作为不安全代码。
可以使用 ToString() 方法检索存储在指针变量所引用位置的数据。
下面的实例演示了这点:

三、传递指针作为方法的参数

运行结果:

四、使用指针访问数组元素

在 C# 中,数组名称和一个指向与数组数据具有相同数据类型的指针是不同的变量类型。例如,int* p 和 int[] p 是不同的类型。您可以增加指针变量 p,因为它在内存中不是固定的,但是数组地址在内存中是固定的,所以您不能增加数组 p。

因此,如果您需要使用指针变量访问数组数据,可以像我们通常在 C 或 C++ 中所做的那样,使用 fixed 关键字来固定指针。
运行结果:

五、编译不安全代码

为了编译不安全代码,您必须切换到命令行编译器指定 /unsafe 命令行。

例如,为了编译包含不安全代码的名为 prog1.cs 的程序,需在命令行中输入命令:

csc /unsafe prog1.cs

如果您使用的是 Visual Studio IDE,那么您需要在项目属性中启用不安全代码。

步骤如下:
1.通过双击资源管理器(Solution Explorer)中的属性(properties)节点,打开项目属性(project properties)。
2. 点击 Build 标签页。
3. 选择选项"Allow unsafe code"。

C#【必备技能篇】不安全代码(unsafe)的使用相关推荐

  1. C#【必备技能篇】Hex文件转bin文件的代码实现

    文章目录 引言 一.需求 二.编写代码的思路 三.代码实现[C#] 测试用的hex文件 引言 在了解hex文件格式的基础上阅读本文更佳.可阅读下边文章: [HEX文件格式详解]https://star ...

  2. C#【必备技能篇】VS2019 使用C/C++ 生成DLL 文件,并用 C/C++、C#调用DLL

    文章目录 前言 一.生成dll 新建项目-C++-动态链接库(DLL) 项目-右键-属性-C/C++-预编译头:不使用预编译头. 项目-右键-属性-C/C++-高级:编译为:C.(也可以不更改,默认就 ...

  3. C#【必备技能篇】两个程序(进程间)通信,传递消息给其它窗口

    文章目录 一.在两个进程之间建立一个共同区域 二.利用API函数去找到进程窗口的句柄,然后用API去控制这个窗口 三.方式选择 四.示例[使用Process类和API实现两个进程之间的数据传输] 程序 ...

  4. C#【必备技能篇】上位机程序开机自动启动

    方法一:(更改注册表的方式) 通过C#操作注册表来实现. 代码已经写好,直接复制过去,在主程序里调用一下即可. /// <summary> /// 修改程序在注册表中的键值 /// < ...

  5. C#【必备技能篇】Marshal是什么?怎么用?

    文章目录 学习来源:MSDN官方文档 一.Marshal是什么? 1.英文释义: 2.在MSDN中的定义: 3.通俗理解: 二.Marshal怎么用?[主要以一些实例来了解] 1.Marshal下的方 ...

  6. C#【必备技能篇】Windows计时器分辨率:重大规则更改

    [特别说明:] 此文章对Windows计时器进行了细致的分析,有一定阅读价值.但其中也有很多错别字或不准确的描述. Windows调度程序的行为在Windows 10 2004(又名2020年4月版W ...

  7. C#【必备技能篇】log4net的使用

    使用log4net大致分以下几步: 1.安装 log4net,通过 Nuget 下载(或者有log4net.dll的话,直接引用即可) 2.新建 log4net.config 配置文件 <?xm ...

  8. C#【必备技能篇】使用批处理脚本(.bat文件)打开控制台应用程序

    背景: 有时,需要使用.bat文件来运行一个.exe程序(一般是控制台应用程序),可以点击bat文件运行C#写的控制台应用程序. 示例: [1]Test.exe程序 和 click.bat文件 放在一 ...

  9. 3306端口是什么协议_防黑必备技能之端口篇

    - 如何查看端口占用情况 我们分windows和linux两种不同的平台分别介绍. 一.windows平台 在windows平台下,查看端口占用情况,最常见的DOS命令就是NETSTAT命令. 打开运 ...

最新文章

  1. 怎么用python制作简单的程序-神级程序员教你如何用python制作一个牛逼的外挂!...
  2. [architecture]-ARMV8的ELx等级切换
  3. pppoe错误代码 linux,PPPOE常见故障代码及分析
  4. 深度揭秘!蚂蚁业务自定义监控大盘是怎么设计的?
  5. Linux Shell常用技巧(九)
  6. 支持商用吗_可商用的插画素材 | 美翻了
  7. java文件重命名有趣实验
  8. 用vs编译openssl静态库
  9. keras中TimeDistributed的用法
  10. A1075[PAT JUDGE] 好题
  11. java 汉字 正则_java正则表达式验证汉字
  12. Oracle分析函数用法
  13. 打开.class文件
  14. 概念理解:财新服务业PMI
  15. mysql-8.0.16-winx64的最新安装教程
  16. 腾讯副总裁姚星离职创业!一手筹建AI Lab,张潼张正友都曾向他汇报
  17. 由ip地址和子网掩码求网络号、主机号、广播地址(超详细)
  18. Python3 批量提取视频中的音频
  19. obj.name 与 obj[name]语法的区别
  20. android飞行棋小程序,C#飞行棋小程序设计代码

热门文章

  1. 前不久江门新会发生了一件不可思议的恐怖事件!!
  2. 高中数学必修4,平面向量讲义(基础知识)
  3. 苹果手机微信分身怎么弄
  4. numpy meshgrid函数
  5. ZooKeeper源码阅读心得分享+源码基本结构+源码环境搭建
  6. java printwriter乱码_PrintWriter输出中文乱码分析与解决方案
  7. CSS3鼠标悬停图片遮罩动画js特效
  8. Hibernate-12-新加联系人操作
  9. 汇编语言的上机过程和GDEBUG命令的使用
  10. python 读取内存二叉树_二叉树类python