El DebuggerHiddenAttribute die es erlaubt, nicht in Code einzugreifen, der nicht debuggt werden soll.
public static class CustomDebug
{
[DebuggerHidden]
public static void Assert(Boolean condition, Func<Exception> exceptionCreator) { ... }
}
...
// The following assert fails, and because of the attribute the exception is shown at this line
// Isn't affecting the stack trace
CustomDebug.Assert(false, () => new Exception());
Außerdem wird verhindert, dass Methoden im Stacktrace angezeigt werden, was nützlich ist, wenn eine Methode eine andere Methode umschließt:
[DebuggerHidden]
public Element GetElementAt(Vector2 position)
{
return GetElementAt(position.X, position.Y);
}
public Element GetElementAt(Single x, Single y) { ... }
Wenn Sie jetzt anrufen GetElementAt(new Vector2(10, 10))
und bei der umschlossenen Methode ein Fehler auftritt, zeigt der Aufrufstapel nicht die Methode an, die die Methode aufruft, die den Fehler auslöst.