结构定义
[StructLayout(LayoutKind.Sequential, Pack = Compile.PackSize)]
unsafe struct DB_PREPLIST
{
public TxnUnion txn;
public fixed byte gid[DbConst.DB_XIDDATASIZE];
}
无法访问错误
问题
当我尝试将DB_PREPLIST
更改为public
时,我收到了另一个错误:
指针和固定大小的缓冲区只能在不安全的环境中使用
答案 0 :(得分:1)
所有需要DB_PREPLIST作为参数的方法都需要在代码中保密。公开DB_PREPLIST在技术上可行,但风格很差,因为您需要标记所有呼叫站点不安全。使用另一个纯C#结构作为参数更好地包装所有调用,并使Delegate成为私有。在这种特殊情况下,这可能意味着您还必须通过包装器将调用重定向到委托。
答案 1 :(得分:0)
unsafe
{
//your code
}
(编辑)你还需要将public
访问修饰符添加到你的结构中,否则,不安全或不安全,你将无法访问它(除非它嵌套在调用它的类中)。