C# 反射:FieldInfo.SetValue()和FieldInfo.SetValueDirect()之间有什么区别?

C# 反射:FieldInfo.SetValue()和FieldInfo.SetValueDirect()之间有什么区别?,c#,reflection,fieldinfo,C#,Reflection,Fieldinfo,我能找到的FieldInfo文档没有比较和对比这两种方法。我很想了解何时应该使用一个参数而不是另一个参数(最好是一个小代码片段)。SetValueDirect采用TypedReference参数,因此,在需要varargs参数互操作性时使用它。这不会对值执行装箱/取消装箱,也不会执行访问检查。它的运行速度比SetValue快 另一方面,SetValue对几乎所有其他内容都起作用。它在需要时执行参数的装箱/拆箱,并检查访问权限 有很多人讨论类型引用和-这两个方面都有代码示例。那么你有一个Typed

我能找到的
FieldInfo
文档没有比较和对比这两种方法。我很想了解何时应该使用一个参数而不是另一个参数(最好是一个小代码片段)。

SetValueDirect采用TypedReference参数,因此,在需要varargs参数互操作性时使用它。这不会对值执行装箱/取消装箱,也不会执行访问检查。它的运行速度比SetValue快

另一方面,SetValue对几乎所有其他内容都起作用。它在需要时执行参数的装箱/拆箱,并检查访问权限


有很多人讨论类型引用和-这两个方面都有代码示例。

那么你有一个
TypedReference
可以用于
SetValueDirect
?是否
SetValueDirect()
SetValue()
运行得更快?