gpt4 book ai didi

c# - 是否在编译时优化了一些反射代码?

转载 作者:行者123 更新时间:2023-11-30 17:47:46 25 4
gpt4 key购买 nike

我认为一些使用反射的代码可以在编译时优化(我不确定我们是否可以称之为优化)。

  • 例如,System.Reflection.MethodInfo.GetCurrentMethod 在同一个方法中调用时总是返回相同的值。

  • 此外,使用类名表示的常量字符串访问类信息没有理由在运行时完成。

我已经对其进行了测试,我得到的结果显示使用反射的代码比没有反射的代码慢大约 300 倍。

是否有任何编译选项可以实现我想要的?

最佳答案

对于 System.Reflection.MethodInfo.GetCurrentMethod 的情况。这通常用于获取当前方法调用的名称。

如果这是用例

public void Foo()
{
var method = System.Reflection.MethodInfo.GetCurrentMethod();
Log.Log(string.Format("I is inside of {0}", method.Name));
}

那么你应该将其替换为

public static MemberName([CallerMemberName] memberName = null)
{
return memberName;
}

public void Foo()
{
Log.Log(string.Format("I is inside of {0}", MemberName()));
}

关于c# - 是否在编译时优化了一些反射代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24322926/

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