前言
c# unsafe可以让我们做一些测试的危险操作。
正文
打开unsafe 功能
在 Visual Studio 开发环境中设置此编译器选项
打开项目的“属性”页。
单击“生成”属性页。
选中“允许不安全代码”复选框。
向 csproj 文件添加此选项
打开项目的 csproj 文件,并添加以下元素:
XML 复制
<PropertyGroup>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
测试
var obj = new PointerDemo();
Console.WriteLine("原始值: {0}, {1}", obj.x, obj.y);
fixed (int* n = &obj.x)
{
fixed (int* p = &obj.y)
{
ChangeValue(n, p); //取data地址并传递
}
}
Console.WriteLine("改变地址后: {0}, {1}", obj.x, obj.y);
Console.ReadLine();
注意
无法获取托管类型的地址。