之前听人说C#没有指针,因为不安全,百度了一下是这么说的:
现在因为工作需要操作硬件看门狗,知道原来C#也是可以操作指针的。 程序环境:.NET MicroFramework 开发工具:VisualStudio 2013开发语言:C#通信工具:新生命神码工具 程序功能:我们的开发硬件在特殊外围情况下可能会出新死机现象。解决方法是通过看门狗程序发现死机,然后C#让MCU指针复位。让MCU重启。 C#操作单片机指针程序操作如下: 代码:
using System; using Microsoft.SPOT; using System.Threading; namespace DoItError { /// <summary> /// 项目属性中选择生成 /// 生成 中勾选“允许不安全的代码” /// 类中标记 unsafe 修饰符 允许使用指针 /// </summary> public class Program { /// <summary>搞死硬件</summary> public static void Main() { int a = 0; while (true) { a++; Thread.Sleep(1000); Debug.Print(a.ToString()); if (a == 20) { Debug.Print("----------执行------------"); new testclass().todo(); return; } } } public unsafe class testclass { public void todo() { //声明一个指针 int* i; //为指针赋值,指向一个不存在的内存地址 i = (int*)0x00000000; //获取这个指针 var j = *i; } } } }
上面的代码实现功能:计数,20秒后单片机死机,重启继续开始。
当然C#是支持指针运算符操作的,只是为了安全VS将指针功能关闭编译,我们需要打开;
解决办法
1、设置VS 项目中“属性”→“生成” 勾选“允许不安全代码”
2、在MF程序使用指针的类上加上 unsafe 修饰符。
3、声明一个指针 int * i;为i赋值一个不存在的内存地址 i=(int *)0x00000000; 取值: var j = *i;
这样VS就支持指针编译了。 然后硬件输出。 例程下载:CSharp操作指针.rar 大热天口干舌燥的,大晚上还在敲代码的都很辛苦了。发张美女给大家降降温。
欢迎大家一起交流 ,分享程序员励志故事。 幸福的程序员 QQ群:
时间: 2024-11-05 11:49:47