我已經寫了調試一個簡單的類,我叫我的代碼的方法Debugger.WriteLine(...)這樣的:有關的問題在C#中的有效記錄
Debugger.WriteLine("[Draw]", "InProgress",
"[x,y] = " + x.ToString("0.00") +
", " + y.ToString("0.00") +
"; pos = " + lastPosX.ToString() + "x" +
lastPosY.ToString() + " -> " + posX.ToString() +
"x" + posY.ToString() + "; SS = " +
squareSize.ToString() + "; MST = " +
startTime.ToString("0.000") + "; Time = " + time.ToString() +
phase.ToString(".0000") + "; progress = " +
progress.ToString("0.000") + "; step = " +
step.ToString() + "; TimeMovementEnd = " +
UI.MovementEndTime.ToString()
);
程序調試器的主體.WriteLine僅在調試模式下編譯(指令#if,#endif)。讓我擔心的是我經常需要在Debugger.WriteLine調用中使用ToString(),這是昂貴的,因爲它還創建了新的字符串(例如用於更改數字)。如何解決這個問題呢?有關調試
幾個點/問題/追蹤:
我不想每包在Debugger.WriteLine IF語句或爲了使用預處理指令離開了調試的方法,因爲它將不可避免地導致不太可讀的代碼,並且它需要太多的輸入。
我不想使用任何框架進行跟蹤/調試。我想嘗試自己編程。
如果在發佈模式下編譯,Trace methods會被忽略嗎?如果是這樣,我的方法可能會有相似的表現嗎?
隨着static String.Format method我可以這樣做:
輸出=的String.Format( 「你現在{0}歲。」 歲);
這看起來不錯。這是我的ToString()問題的解決方案嗎?
這種方法真的存在性能問題嗎? – harpo 2010-04-14 18:58:24
@harpo:有很多不可變的字符串被創建。單次調用並不算太糟糕,但如果此方法輸出頻率足夠高,則會由於所有字符串對象分配而減慢速度。 – 2010-04-14 19:00:07
它經常被調用。 – 2010-04-14 19:08:55