一尘不染

如何获得当前行号?

c#

这是我想做的一个例子:

MessageBox.Show("Error line number " + CurrentLineNumber);

在上方的代码中CurrentLineNumber,应该是这段代码的源代码中的行号。

我怎样才能做到这一点?


阅读 365

收藏
2020-05-19

共1个答案

一尘不染

在.NET 4.5 / C#5中,通过编写使用新调用者属性的实用程序方法,可以使编译器为您完成此工作:

static void SomeMethodSomewhere()
{
    ShowMessage("Boo");
}
...
static void ShowMessage(string message,
    [CallerLineNumber] int lineNumber = 0,
    [CallerMemberName] string caller = null)
{
     MessageBox.Show(message + " at line " + lineNumber + " (" + caller + ")");
}

这将显示,例如:

第39行的Boo(SomeMethodSomewhere)

[CallerFilePath]可以告诉您原始代码文件的路径。

2020-05-19