C#不安全类型->;char*[],获取char数组上的指针

本文关键字:char 获取 数组 指针 类型 不安全 gt | 更新日期: 2023-09-27 17:50:19

拥有:

[DllImport("OpenAL32.dll")]
static extern void alcOpenDevice(char*[] devicename);

想要像smth那样发送这个函数的名称:

char[] data = "Hello!".ToCharArray();
char*[] txt = &data;

但是得到错误:

  • 无法将类型char[] *隐式转换为char * []

    (有趣的错误,因为C#编译器拒绝在/unsafe模式下定义char[] *:(

  • 无法获取的地址、获取的大小或声明指向托管类型的指针(char[](

PS
char何时被管理?这是一个结构体,不是吗?

public struct Char : IComparable, IConvertible, IComparable<char>, IEquatable<char>

尽管编译器显示了有关声明指向托管类型(char[](的指针的信息。我只能建议,当类型是数组时,CLR可能会将其呈现为托管类型,但这听起来非常疯狂。

C#不安全类型->;char*[],获取char数组上的指针

alcOpenDevice不接受char*[]char**,它接受char*,您应该将其指定为string。它还返回一个句柄。

    [DllImport("OpenAL32.dll", CharSet = CharSet.Ansi)]
    static extern IntPtr alcOpenDevice(string devicename);