gpt4 book ai didi

c# - 帮助将 Reflector 解构翻译成可编译的代码

转载 作者:太空宇宙 更新时间:2023-11-03 11:48:12 24 4
gpt4 key购买 nike

所以我正在反射一些框架 2.0 代码并以以下解构结束

fixed (void* voidRef3 = ((void*) &_someMember))
{
...
}

由于“固定语句赋值的右侧可能不是强制转换表达式”,因此无法编译

我知道 Reflector 只能近似,通常我可以看到一条清晰的路径,但这有点超出我的经验。

问题:Reflector 试图向我描述什么?

更新:

我也看到了以下内容

fixed (IntPtr* ptrRef3 = ((IntPtr*) &this._someMember))

更新:

因此,正如 Mitch 所说,它不是按位运算符,而是 addressOf 运算符。

现在的问题是:

fixed (IntPtr* ptrRef3 = &_someMember)

失败并显示“无法将类型“xxx*”隐式转换为“System.IntPtr*”。存在显式转换(是否缺少强制转换?)' 编译错误。

所以我似乎觉得如果我这样做也该死,如果我不这样做也该死。有什么想法吗?

更新:

我想我已经明白了。一次偶然的机会,我回到了使用 void* 的表达式并删除了类型转换,VS 停止了提示,因为我从这次对话的参与者那里收集到 void*intptr* 是等效的,我只是将它们换掉,结果是:

fixed (void* ptrRef3 = &_someMember)

VS 停止了提示。有人可以验证吗

fixed (void* ptrRef3 = &_someMember)

相当于

fixed (IntPtr* ptrRef3 = &_someMember)

?

最佳答案

它获取 _someMember 的地址并将其转换为 (void *)(即指针地址),然后为该地址设置一个位置。

fixed 语句“固定”对象,并防止 GC 移动它。

该上下文中使用的“&”是“Address Of”运算符,而不是按位与。

回应更新的问题:

你试过吗:

fixed (void* voidRef3 = &_someMember) 
{
...
}

关于c# - 帮助将 Reflector 解构翻译成可编译的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2842849/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com