如何将行号传递给方法

时间:2014-03-16 02:12:24

标签: debugging visual-studio-2013 line-numbers

在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就是答案。

1 个答案:

答案 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编译器。