C# 里怎样得到当前执行的函数名,当前代码行,源代码文件名。

本文介绍了如何在C#中使用StackTrace和StackFrame类获取当前执行的函数名、代码行数以及源代码文件信息,展示了button1_Click事件中的具体代码示例。
摘要由CSDN通过智能技术生成

运行结果:

文件名
D:\CSharp\函数名代码行源代码文件名\WindowsFormsApp1\WindowsFormsApp1\Form1.cs
函数名
button1_Click
代码行1
24
代码列1
13
代码行2
24
代码列2
13

截图:

程序在代码中的实际位置

因此得出结论,输出的是上图“st”定义的位置。

对应的输出内容:(可以观察到列增加了2格)

文件名
D:\CSharp\函数名代码行源代码文件名\WindowsFormsApp1\WindowsFormsApp1\Form1.cs
函数名
button1_Click
代码行1
24
代码列1
15
代码行2
24
代码列2
15

详细代码如下:


        private void button1_Click(object sender, EventArgs e)
        {
            
            StackTrace   st = new StackTrace(new StackFrame(true));
            Console.WriteLine(" Stack trace for current level: {0}", st.ToString());

            StackFrame sf = st.GetFrame(0);
            Console.WriteLine(" File: {0}", sf.GetFileName());
            Console.WriteLine(" Method: {0}", sf.GetMethod().Name);
            Console.WriteLine(" Line Number: {0}", sf.GetFileLineNumber());
            Console.WriteLine(" Column Number: {0}", sf.GetFileColumnNumber());

            richTextBox1.Text = "";
            richTextBox1.AppendText("文件名\r\n");
            richTextBox1.AppendText(sf.GetFileName());
            richTextBox1.AppendText("\r\n函数名\r\n");
            richTextBox1.AppendText(sf.GetMethod().Name);

            richTextBox1.AppendText("\r\n代码行1\r\n");
            richTextBox1.AppendText(sf.GetFileLineNumber().ToString());

            richTextBox1.AppendText("\r\n代码列1\r\n");
            richTextBox1.AppendText(sf.GetFileColumnNumber().ToString());


            richTextBox1.AppendText("\r\n代码行2\r\n");
            richTextBox1.AppendText(sf.GetFileLineNumber().ToString());

            richTextBox1.AppendText("\r\n代码列2\r\n");
            richTextBox1.AppendText(sf.GetFileColumnNumber().ToString());


        }

参考连接

StackFrame 类 (System.Diagnostics) | Microsoft Learnicon-default.png?t=N7T8https://learn.microsoft.com/zh-cn/dotnet/api/system.diagnostics.stackframe?view=netframework-4.8&devlangs=csharp&f1url=%3FappId%3DDev17IDEF1%26l%3DZH-CN%26k%3Dk(System.Diagnostics.StackFrame)%3Bk(TargetFrameworkMoniker-.NETFramework%2CVersion%253Dv4.8)%3Bk(DevLang-csharp)%26rd%3Dtrue

StackTrace 构造函数 (System.Diagnostics) | Microsoft Learnicon-default.png?t=N7T8https://learn.microsoft.com/zh-cn/dotnet/api/system.diagnostics.stacktrace.-ctor?view=netframework-4.8&devlangs=csharp&f1url=%3FappId%3DDev17IDEF1%26l%3DZH-CN%26k%3Dk(System.Diagnostics.StackTrace.%2523ctor)%3Bk(TargetFrameworkMoniker-.NETFramework%2CVersion%253Dv4.8)%3Bk(DevLang-csharp)%26rd%3Dtrue

C# 里怎样得到当前执行的函数名,当前代码行,源代码文件名。 _c# 输出当前脚本名称-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/21aspnet/article/details/3522152

【C/C++】C语言中的__FILE__、__LINE__、#line、__func__关键字的作用_printf ("%s\n", __func__)作用是啥-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_34018840/article/details/106497648?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171426817516800184160640%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171426817516800184160640&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-106497648-null-null.142%5Ev100%5Econtrol&utm_term=__file%20printf&spm=1018.2226.3001.4187特此记录

anlog

2024年4月28日

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值