Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Console.Writeline占位符作为函数名_C#_Console.writeline - Fatal编程技术网

C#Console.Writeline占位符作为函数名

C#Console.Writeline占位符作为函数名,c#,console.writeline,C#,Console.writeline,使用Console.Writeline()时,当前函数名是否有占位符?在反射中,您有MethodBase.GetCurrentMethod()作为选项。在反射中,您有MethodBase.GetCurrentMethod()作为选项。我相信这就是您要寻找的: using System.Diagnostics; StackTrace stackTrace = new StackTrace(); Console.WriteLine(stackTrace.GetFrame(1).GetMethod(

使用Console.Writeline()时,当前函数名是否有占位符?

在反射中,您有MethodBase.GetCurrentMethod()作为选项。

在反射中,您有MethodBase.GetCurrentMethod()作为选项。

我相信这就是您要寻找的:

using System.Diagnostics;

StackTrace stackTrace = new StackTrace();
Console.WriteLine(stackTrace.GetFrame(1).GetMethod().Name);

我相信这就是你想要的:

using System.Diagnostics;

StackTrace stackTrace = new StackTrace();
Console.WriteLine(stackTrace.GetFrame(1).GetMethod().Name);

另一个(更好的)日志记录选项是使用框架,如


另一个(更好的)日志记录选项是,除非您想使用反射,否则不要使用框架,如

。然而,C#5将包括一个名为“Caller Info Attributes”的新特性,该特性将在编译时插入信息。除非要使用反射,否则请参见。然而,C#5将包括一个名为“Caller Info Attributes”的新特性,该特性将在编译时插入信息。请参阅

可能值得补充的是,这可能会很昂贵。我非常确定它没有Console.WriteLine那么昂贵。@zmbq-公平点-但几乎只是与Console.WriteLine(非常慢)相比。与您可能正在做的其他事情和其他形式的日志记录相比,这可能不是您想要随意散布的东西。@Rob,StackFrame.GetMethod()快吗?从我非常粗糙的microbenchmark还是同时运行100000次-看起来它是
MethodBase。GetCurrentMethod
快了5倍以上(假设您每次都创建一个新的
StackFrame
实例。但这是一个相当粗糙的微基准!-不要太认真!可能值得补充的是,这可能会很昂贵。我很确定它没有Console.WriteLine那么贵。@zmbq-公平点-但仅与Console.WriteLine相比非常昂贵(这太慢了)。与您可能正在做的其他事情和其他形式的日志记录相比,这可能不是您想要随意散布的内容。@Rob,is StackFrame.GetMethod()更快?从我非常粗糙的microbenchmark或者运行了100000次-看起来它是
MethodBase。GetCurrentMethod
快了5倍以上(假设你每次都创建一个
StackFrame
的新实例。这是一个相当粗糙的微基准测试!-不要太认真了!有什么“神奇的标记”吗表示Console.WriteLine中当前执行方法/属性名称的。这正是我的意思。我为不清楚而道歉。Console.WriteLine中是否有表示当前执行方法/属性名称的“魔术标记”。这正是我的意思。我为不清楚而道歉。