所以我正在反射一些框架 2.0 代码并最终得到以下解构
fixed (void* voidRef3 = ((void*) &_someMember))
{
...
}
由于“ The right hand side of a fixed statement assignment may not be a cast expression
” ,这将无法编译
我知道反射器只能近似,通常我可以看到一条清晰的路径,但这有点超出我的经验。
问题:Reflector 试图向我描述什么?
更新:
我还看到以下内容
fixed (IntPtr* ptrRef3 = ((IntPtr*) &this._someMember))
更新:
因此,正如 Mitch 所说,它不是按位运算符,而是 addressOf 运算符。
现在的问题是:
fixed (IntPtr* ptrRef3 = &_someMember)
失败并出现“ Cannot implicitly convert type 'xxx*' to 'System.IntPtr*'. An explicit conversion exists (are you missing a cast?)
”编译错误。
因此,如果我这样做,我似乎该死,如果我不这样做,我似乎该死。有任何想法吗?
更新:
我想我想通了。偶然地,我回到使用void*
并删除演员表的表达,VS停止抱怨,因为我从这次对话的参与者那里收集到void*
并且intptr*
是等价的,所以我只是将它们换掉,结果是:
fixed (void* ptrRef3 = &_someMember)
VS 不再抱怨了。有人可以验证
fixed (void* ptrRef3 = &_someMember)
相当于
fixed (IntPtr* ptrRef3 = &_someMember)
?