我在dnspy中反编译了一些unity dll文件
并得到了这条线
RuntimeHelpers.InitializeArray(array, fieldof(<PrivateImplementationDetails>.51A7A390CD6DE245186881400B18C9D822EFE240).FieldHandle);
我需要了解该行中的 fieldof() 函数,我以前从未见过(因为我是初学者)
以及为什么它在该行中显示错误的两个原因
最佳答案
在 MSIL 中,C# 代码(和一堆其他语言)被编译成的中间语言,有这个方便的 fieldof
获取 FieldInfo
的运算符的领域。然而,fieldof
在 C# 中不存在。
在 C# 中,您需要执行以下操作:
var type = typeof(EnclosingClass); // "EnclosingClass" is the class this code is in
// assuming PrivateImplementationDetails is private
var fieldInfo = type.GetField("PrivateImplementationDetails", BindingFlags.NonPublic);
RuntimeHelpers.InitializeArray(array, fieldInfo.FieldHandle);
关于c# - 什么是 C# 中的 "fieldof()"方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61026150/