什么是 C# 中的“fieldof()”方法

kkk*_*kkk 5 c# field

我在 dnspy 中反编译了一些统一的 dll 文件并得到了这一行

RuntimeHelpers.InitializeArray(array, fieldof(<PrivateImplementationDetails>.51A7A390CD6DE245186881400B18C9D822EFE240).FieldHandle);
Run Code Online (Sandbox Code Playgroud)

我需要了解该行中的 fieldof() 函数,我以前从未见过(因为我是初学者)

以及为什么它在该行中显示错误的两个原因

Swe*_*per 9

在 MSIL(C# 代码(以及其他一些语言)被编译成的中间语言)中,有一个方便的fieldof运算符可以获取FieldInfoof 字段。但是,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);
Run Code Online (Sandbox Code Playgroud)