使用调用者信息属性对性能的影响

本文关键字:性能 影响 属性 调用者 信息 | 更新日期: 2023-09-27 18:09:55

我正试图找到一种有效的方式来记录方法名称,而不是速度和可维护性。我猜,在。net 4.5中,除了速度部分外,调用者信息属性就是为了这个目的而暴露的。我觉得这些只是使用System.Reflection.MethodBase.GetCurrentMethod()stackTrace.GetFrame(1).GetMethod().Name的语法糖(从这里得到的)。(或者)这些方法是否也有性能上的好处?

在c#中,是否有一种方法可以在编译时获得方法名(就像在c++中一样)?

使用调用者信息属性对性能的影响

调用者信息属性导致c#编译器在调用站点提供调用者的名称。这发生在编译时,不涉及反射。

public void DoProcessing()
{
    LogCall();
}
public void LogCall([CallerMemberName] string memberName = "")
{
     Console.WriteLine(memberName + " was called.");
}

将被编译为:

public void DoProcessing()
{
    LogCall("DoProcessing");
}
public void LogCall(string memberName)
{
     Console.WriteLine(memberName + " was called.");
}