輸出資訊法(Debug)

singhwong發表於2021-01-03

有時候,開發者並不關心物件在執行時的狀態,而僅僅需要驗證結果是否正確,因此通過輸出除錯資訊來判斷程式碼的執行結果是否符合預期,比起斷點除錯會更方便。
Debug類(位於System.Diagnostics名稱空間下)可以幫助開發人員完成與除錯相關操作,比如輸出除錯資訊、斷言等。而用於輸出除錯資訊的方法有以下幾個:

  1. Print方法:輸出文字資訊,該文字資訊是帶有行結尾符的,也就是說每次輸出一行。
  2. Write方法:輸出除錯資訊,如果傳遞給引數的不是字串型別,則呼叫該物件的ToString方法以獲取字串表示形式。該方法輸出的除錯資訊末尾是不帶行結尾符號的。
  3. WriteIf方法:和Write方法一樣,不同的是WriteIf方法需要指定一個條件,當條件為true時才會輸出除錯資訊。
  4. WriteLine方法:和Write方法類似,只是在輸出內容的末尾會自動加上換行符。
  5. WriteLineIf方法:和WriteLine方法相近,不過在呼叫時要提供一個判斷條件,當條件為true時才輸出資訊。

這些方法使用起來跟Console.Write方法差不多,只不過它們並不是把資訊輸出到應用程式螢幕上,預設情況下,除錯資訊是輸出到Visual Studio的“輸出”視窗中。當然,通過配置也可以讓除錯資訊同時輸出到日誌檔案。
示例如下:

            System.Console.WriteLine("按Esc鍵退出應用程式。");
            do
            {
                System.Console.WriteLine("請輸入一個整數:");
                //讀入一行
                string numTxt = Console.ReadLine();
                //將讀入的字串轉換為數字
                long longNum;
                if(long.TryParse(numTxt,out longNum))
                {
                    //計算階乘
                    long result = 1L;
                    while(longNum > 0)
                    {
                        //輸出除錯資訊
                        Debug.WriteLine($"longNum的當前值為:{longNum}");
                        //乘積
                        result *= longNum;
                        longNum --;
                    }
                    //輸出計算結果
                    System.Console.WriteLine($"{numTxt}的階乘為:{result}");
                }
            }
            while(Console.ReadKey().Key != ConsoleKey.Escape);

上面的例子實現階乘計算。使用者輸入一個整數值,確認後程式會計算該整數的階乘,並輸出計算結果。例如,輸入一個整數5,程式會計算54321的結果。
在每一輪迴圈中都使用Debug類的WriteLine方法輸出變數longNum的當前值。執行後的結果如下所示:

按Esc鍵退出應用程式。
請輸入一個整數:
10
10的階乘為:3628800

相關文章