在Visual Stuido 2013中,使用C#(。Net 4.5),如何将行号传递给方法调用。我记得在C中有一个#pragma lineNumber来执行此操作,但搜索这些条款不会产生任何结果。
我想写一个像这样的方法:
// unchecked code:
private void printResetStopwatch(int lineNumber)
{
stopwatch.stop();
System.Console.WriteLine(stopwatch.Elapsed.ToString() + " at line " + lineNumber.ToString();
}
我会称之为
printResetStopwatch(#pragma lineNumber);
如果#pragma就是答案。
答案 0 :(得分:1)
执行此操作的方法是使用CallerLineNumberAttribute
为方法定义参数,并为其提供默认值。然后,C#将使用调用者的行号
void Method(string message, [CallerLineNumber] int lineNumber = 0) {
...
}
Method("foo"); // C# will insert the line number here
请注意,这里有一组您可能感兴趣的相关属性。这是一个样本
public void TraceMessage(string message,
[CallerMemberName] string memberName = "",
[CallerFilePath] string sourceFilePath = "",
[CallerLineNumber] int sourceLineNumber = 0)
完整文档:http://msdn.microsoft.com/en-us/library/hh534540.aspx
注意:这需要VS 2013中包含的C#5.0编译器。