C# 反射 : What is the difference between FieldInfo. SetValue() 和 FieldInfo.SetValueDirect()?

标签 c# reflection fieldinfo

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

最佳答案

SetValueDirect 采用 TypedReference 参数,因此在需要可变参数互操作性时使用它。这不执行值的装箱/拆箱,也不执行访问检查。它比 SetValue 运行得更快。

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

有 SO 讨论 TypedReferences herehere - 两者都有代码示例。

关于C# 反射 : What is the difference between FieldInfo. SetValue() 和 FieldInfo.SetValueDirect()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23861895/

相关文章:

c# - FieldInfo.GetValue 为私有(private)成员返回 null 而调试器指示字段不为 null?

.net - 如何通过反射引用字段

c# - connection.open 挂起/卡住。我的连接字符串有什么问题?

java - Java中有类似instanceOf(Class<?> c)的东西吗?

c# - 如何获取任意事件的调用列表

c# - 使用 InvokeMember 检索静态属性值

c# - 如何在不进行字符串比较的情况下获取类函数的 MethodInfo

c# - 在 ActionFilterAttribute 中设置 TempData

c# - 下载网页的一部分 - 数据挖掘

c# - MySQL C#错误; "connection must be valid and open"