用于记录目的
__LINE__
__FILE__
Run Code Online (Sandbox Code Playgroud)
我是C/C++的朋友.在Java中获取该信息,我不得不抛出异常并抓住它.为什么在现代编程语言中忽略了这些旧的备用语言?他们的简约有些神奇.
有没有办法检索C#代码中的当前源文件名和亚麻,并在控制台输出中打印该值?像C中的LINE和FILE一样?
请指教.
非常感谢
我正在使用Visual Studio 2010编写一个C#程序,我希望将某些事件写入日志文件,并包含代码所在的行号.
我只发现了两种捕获行号的方法 - CallerLineNumber,它需要.Net 4.5/C#5(我的目标是.Net 4)和StackFrame.GetFileLineNumber,这显然需要调试版本和pdb文件才能正常工作,我正在生成一个发布版本,没有pdb文件.
但这是我没有得到的 - 以上都是运行时解决方案,但行号是编译时实体.为什么需要运行时解决方案?
我可以输入正确的行号作为文字常量,只需查看屏幕底部的内容,如"ln 175"...
LogEvent("It happened at line 175");
Run Code Online (Sandbox Code Playgroud)
但问题是,如果我在第175行之前编辑任何代码,我的文字可能不再正确.但编译器知道正确的行号,并且我过去曾使用过编程语言,它们只能将正确的行号作为编译时常量弹出.(例如,ANSI C和Microsoft C++支持预定义的宏调用
_LINE_)有没有办法让C#这样做?如果没有解决我的问题?
我需要通过NLog将日志条目的源代码行号.
请让我知道其他方法.
<<Log entry>> Line 23
<<Log entry>> Line 391
Run Code Online (Sandbox Code Playgroud)
PS-23,391是源代码行号.谢谢
有没有办法在C#的Console.WriteLine函数中包含行号和文件名?
例如,在文件"myClass.cs"的第115行,我有声明
Console.WriteLine("Hello world");
Run Code Online (Sandbox Code Playgroud)
我希望输出为:
[myClass.cs][115]: Hello world
Run Code Online (Sandbox Code Playgroud) 我们如何获得C#/ WinForms中当前正在执行的代码的行号.
在PHP中,我们可以访问__LINE__或__FUNCTION__访问有关当前正在执行的代码段的详细信息.