运行结果:
文件名
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());
}
参考连接
anlog
2024年4月28日