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[]
(
PSchar
何时被管理?这是一个结构体,不是吗?
public struct Char : IComparable, IConvertible, IComparable<char>, IEquatable<char>
尽管编译器显示了有关声明指向托管类型(char[]
(的指针的信息。我只能建议,当类型是数组时,CLR可能会将其呈现为托管类型,但这听起来非常疯狂。
alcOpenDevice不接受char*[]
或char**
,它接受char*
,您应该将其指定为string
。它还返回一个句柄。
[DllImport("OpenAL32.dll", CharSet = CharSet.Ansi)]
static extern IntPtr alcOpenDevice(string devicename);