用c#建一个类,里面某个函数能用上指针 要用unsafe
时间: 2024-05-16 14:18:22 浏览: 46
C# 调用C++DLL(函数参数包含指针)
好的,下面是一个简单的示例,演示如何在 C# 中使用指针和 unsafe 代码块:
```csharp
using System;
public class MyClass
{
private int[] _data;
public MyClass(int size)
{
_data = new int[size];
}
public unsafe void SetValue(int index, int value)
{
fixed (int* p = _data) // 将 _data 数组的指针固定
{
*(p + index) = value; // 通过指针设置数组元素的值
}
}
public unsafe int GetValue(int index)
{
fixed (int* p = _data) // 将 _data 数组的指针固定
{
return *(p + index); // 通过指针获取数组元素的值
}
}
}
class Program
{
static void Main(string[] args)
{
MyClass myClass = new MyClass(10);
myClass.SetValue(0, 1);
myClass.SetValue(1, 2);
myClass.SetValue(2, 3);
Console.WriteLine(myClass.GetValue(0)); // 输出 1
Console.WriteLine(myClass.GetValue(1)); // 输出 2
Console.WriteLine(myClass.GetValue(2)); // 输出 3
}
}
```
在上面的示例中,我们创建了一个名为 `MyClass` 的类,其中包含了两个使用指针的函数 `SetValue` 和 `GetValue`。在这两个函数中,我们使用了 `fixed` 关键字来固定数组 `_data` 的指针,然后通过指针访问数组元素。注意,我们需要在类定义前面加上 `unsafe` 关键字才能使用指针。
需要注意的是,使用指针和 unsafe 代码块需要特别小心,因为不当的使用可能会导致内存泄漏、非法访问内存等问题。因此,应该尽量避免使用指针,除非确实需要使用它们来提高性能或实现某些特定的功能。
阅读全文