Debug.WriteIf 方法

定義

若條件為 true,則將除錯資訊寫入集合中的Listeners追蹤監聽器。

多載

名稱 Description
WriteIf(Boolean, Object)

如果條件是 ToString(),請將物件的 Listeners 方法值寫入 true 集合中的追蹤接聽項。

WriteIf(Boolean, String)

如果條件 Listeners,請將訊息寫入 true 集合中的追蹤接聽程式。

WriteIf(Boolean, Object, String)

如果條件是 ToString(),請將物件的 Listeners 方法的類別名稱和值寫入至 true 集合中的追蹤接聽程式。

WriteIf(Boolean, String, String)

如果條件 Listeners,請將類別名稱和訊息寫入 true 集合中的追蹤接聽程式。

WriteIf(Boolean, Object)

如果條件是 ToString(),請將物件的 Listeners 方法值寫入 true 集合中的追蹤接聽項。

public:
 static void WriteIf(bool condition, System::Object ^ value);
[System.Diagnostics.Conditional("DEBUG")]
public static void WriteIf(bool condition, object value);
[<System.Diagnostics.Conditional("DEBUG")>]
static member WriteIf : bool * obj -> unit
Public Shared Sub WriteIf (condition As Boolean, value As Object)

參數

condition
Boolean

要評估的條件運算式。 若條件為 true,則該值會寫入集合中的追蹤監聽者。

value
Object

物件,其名稱會傳送至 Listeners

屬性

範例

下列範例會建立名為 TraceSwitchgeneralSwitch。 這個參數是在程式碼範例之外設定的。

若開關設定為 或 TraceLevelError 更高,範例將值參數的首名輸出為 Listeners。 如需將接聽程式新增至 Listeners 集合的詳細資訊,請參閱 TraceListenerCollection 類別。

然後,如果 被 TraceLevel 設為 Verbose,範例會輸出與第一則訊息同一行的訊息。 行終止符遵循第二則訊息。

// Class-level declaration.
// Create a TraceSwitch.
static TraceSwitch generalSwitch = new TraceSwitch("General", "Entire Application");

static public void MyErrorMethod(Object myObject)
{
    // Write the message if the TraceSwitch level is set to Error or higher.
    Debug.WriteIf(generalSwitch.TraceError, myObject);

    // Write a second message if the TraceSwitch level is set to Verbose.
    Debug.WriteLineIf(generalSwitch.TraceVerbose, " is not a valid value for this method.");
}
' Class-level declaration.
' Create a TraceSwitch.
Private Shared generalSwitch As New TraceSwitch("General", "Entire Application")


Public Shared Sub MyErrorMethod(myObject As Object)
    ' Write the message if the TraceSwitch level is set to Error or higher.
    Debug.WriteIf(generalSwitch.TraceError, myObject)
    
    ' Write a second message if the TraceSwitch level is set to Verbose.
    Debug.WriteLineIf(generalSwitch.TraceVerbose, " is not a valid value for this method.")
End Sub

備註

根據預設,輸出會寫入 DefaultTraceListener實例。

這個方法會呼叫追蹤接聽程式的 Write 方法。

給繼承者的注意事項

你可以透過使用 If...Then 陳述式來減少安裝應用程式的效能損失,而不是用 WriteIf(Boolean, String) 陳述式。 以下兩個程式碼範例傳送相同的除錯訊息。 然而,第一個例子在追蹤關閉時速度快得多,因為若 mySwitch.TraceError 將 評估為 false,則不會呼叫 Write(String)。 第二個例子總是呼叫 WriteIf(Boolean, String),即使 mySwitch.TraceErrorfalse 且未產生追蹤輸出。 這可能導致不必要的執行任意複雜程式碼。

第一個例子:

if(mySwitch.TraceError)
    Debug.Write("aNumber = " + aNumber + " out of range");

第二個例子:

Debug.WriteIf(mySwitch.TraceError, "aNumber = " + aNumber + " out of range");

另請參閱

適用於

WriteIf(Boolean, String)

如果條件 Listeners,請將訊息寫入 true 集合中的追蹤接聽程式。

public:
 static void WriteIf(bool condition, System::String ^ message);
[System.Diagnostics.Conditional("DEBUG")]
public static void WriteIf(bool condition, string message);
[<System.Diagnostics.Conditional("DEBUG")>]
static member WriteIf : bool * string -> unit
Public Shared Sub WriteIf (condition As Boolean, message As String)

參數

condition
Boolean

要評估的條件運算式。 若條件為 true,則訊息會寫入集合中的追蹤監聽者。

message
String

要寫入的訊息。

屬性

範例

下列範例會建立名為 TraceSwitchgeneralSwitch。 這個參數是在程式碼範例之外設定的。

如果參數設定為 TraceLevelError 或更高版本,則此範例會將第一個錯誤訊息輸出至 Listeners。 關於如何將監聽器加入集合的Listeners資訊,請參見類別。TraceListenerCollection

然後,如果 TraceLevel 設定為 Verbose,則此範例會在與第一個訊息相同的行上輸出第二個錯誤訊息。 行終止符遵循第二則訊息。

// Class-level declaration.
// Create a TraceSwitch.
TraceSwitch generalSwitch = new TraceSwitch("General", "Entire Application");

static void MyErrorMethod()
{
    // Write the message if the TraceSwitch level is set to Error or higher.
    Debug.WriteIf(generalSwitch.TraceError, "My error message. ");

    // Write a second message if the TraceSwitch level is set to Verbose.
    Debug.WriteIf(generalSwitch.TraceVerbose, "My second error message.");
}
' Class-level declaration.
' Create a TraceSwitch.
Private Shared generalSwitch As New TraceSwitch("General", "Entire Application")


Public Shared Sub MyErrorMethod()
    ' Write the message if the TraceSwitch level is set to Error or higher.
    Debug.WriteIf(generalSwitch.TraceError, "My error message. ")
    
    ' Write a second message if the TraceSwitch level is set to Verbose.
    Debug.WriteIf(generalSwitch.TraceVerbose, "My second error message.")
End Sub

備註

根據預設,輸出會寫入 DefaultTraceListener實例。

這個方法會呼叫追蹤接聽程式的 Write 方法。

給繼承者的注意事項

你可以透過使用 If...Then 陳述式來減少安裝應用程式的效能損失,而不是用 WriteIf(Boolean, String) 陳述式。 以下兩個程式碼範例傳送相同的除錯訊息。 然而,第一個例子在追蹤關閉時速度快得多,因為若 mySwitch.TraceError 將 評估為 false,則不會呼叫 Write(String)。 第二個例子總是呼叫 WriteIf(Boolean, String),即使 mySwitch.TraceErrorfalse 且未產生追蹤輸出。 這可能導致不必要的執行任意複雜程式碼。

第一個例子:

if(mySwitch.TraceError)
    Debug.Write("aNumber = " + aNumber + " out of range");

第二個例子:

Debug.WriteIf(mySwitch.TraceError, "aNumber = " + aNumber + " out of range");

另請參閱

適用於

WriteIf(Boolean, Object, String)

如果條件是 ToString(),請將物件的 Listeners 方法的類別名稱和值寫入至 true 集合中的追蹤接聽程式。

public:
 static void WriteIf(bool condition, System::Object ^ value, System::String ^ category);
[System.Diagnostics.Conditional("DEBUG")]
public static void WriteIf(bool condition, object value, string category);
[<System.Diagnostics.Conditional("DEBUG")>]
static member WriteIf : bool * obj * string -> unit
Public Shared Sub WriteIf (condition As Boolean, value As Object, category As String)

參數

condition
Boolean

要評估的條件運算式。 若條件為 true,則類別名稱與值會寫入集合中的追蹤監聽者。

value
Object

物件,其名稱會傳送至 Listeners

category
String

用來組織輸出的類別名稱。

屬性

範例

下列範例會建立名為 TraceSwitchgeneralSwitch。 這個參數是在程式碼範例之外設定的。

若開關設為 TraceLevelVerbose,範例將輸出 的名稱 myObject ,且 categoryListeners。 如需將接聽程式新增至 Listeners 集合的詳細資訊,請參閱 TraceListenerCollection 類別。

然後,如果 被 TraceLevel 設定為或 Error 更高,範例會在與第一個訊息同一行輸出第二個錯誤訊息。 行終止符遵循第二則訊息。

// Class-level declaration.
// Create a TraceSwitch.
static TraceSwitch generalSwitch = new TraceSwitch("General", "Entire Application");

static public void MyErrorMethod(Object myObject, string category)
{
    // Write the message if the TraceSwitch level is set to Verbose.
    Debug.WriteIf(generalSwitch.TraceVerbose, myObject, category);

    // Write a second message if the TraceSwitch level is set to Error or higher.
    Debug.WriteLineIf(generalSwitch.TraceError, " Object is not valid for this category.");
}
' Class-level declaration.
' Create a TraceSwitch.
Private Shared generalSwitch As New TraceSwitch("General", "Entire Application")


Public Shared Sub MyErrorMethod(myObject As Object, category As String)
    ' Write the message if the TraceSwitch level is set to Verbose.
    Debug.WriteIf(generalSwitch.TraceVerbose, myObject, category)
    
    ' Write a second message if the TraceSwitch level is set to Error or higher.
    Debug.WriteLineIf(generalSwitch.TraceError, " Object is not valid for this category.")
End Sub

備註

根據預設,輸出會寫入 DefaultTraceListener實例。

category 參數可用來將輸出訊息分組。

這個方法會呼叫追蹤接聽程式的 Write 方法。

給繼承者的注意事項

你可以透過使用 If...Then 陳述式來減少安裝應用程式的效能損失,而不是用 WriteIf(Boolean, String) 陳述式。 以下兩個程式碼範例傳送相同的除錯訊息。 然而,第一個例子在追蹤關閉時速度快得多,因為若 mySwitch.TraceError 將 評估為 false,則不會呼叫 Write(String)。 第二個例子總是呼叫 WriteIf(Boolean, String),即使 mySwitch.TraceErrorfalse 且未產生追蹤輸出。 這可能導致不必要的執行任意複雜程式碼。

第一個例子:

if(mySwitch.TraceError)
    Debug.Write("aNumber = " + aNumber + " out of range");

第二個例子:

Debug.WriteIf(mySwitch.TraceError, "aNumber = " + aNumber + " out of range");

另請參閱

適用於

WriteIf(Boolean, String, String)

如果條件 Listeners,請將類別名稱和訊息寫入 true 集合中的追蹤接聽程式。

public:
 static void WriteIf(bool condition, System::String ^ message, System::String ^ category);
[System.Diagnostics.Conditional("DEBUG")]
public static void WriteIf(bool condition, string message, string category);
[<System.Diagnostics.Conditional("DEBUG")>]
static member WriteIf : bool * string * string -> unit
Public Shared Sub WriteIf (condition As Boolean, message As String, category As String)

參數

condition
Boolean

要評估的條件運算式。 若條件為 true,則類別名稱與訊息會寫入集合中的追蹤監聽者。

message
String

要寫入的訊息。

category
String

用來組織輸出的類別名稱。

屬性

範例

下列範例會建立名為 TraceSwitchgeneralSwitch。 這個參數是在程式碼範例之外設定的。

若開關設為 TraceLevelVerbose,範例會輸出第一個錯誤訊息至 Listeners。 如需將接聽程式新增至 Listeners 集合的詳細資訊,請參閱 TraceListenerCollection 類別。

然後,如果 被 TraceLevel 設定為或 Error 更高,範例會在與第一個訊息同一行輸出第二個錯誤訊息。 行終止符遵循第二則訊息。

// Class-level declaration.
// Create a TraceSwitch.
static TraceSwitch generalSwitch = new TraceSwitch("General", "Entire Application");

static public void MyErrorMethod(Object myObject, string category)
{
    // Write the message if the TraceSwitch level is set to Verbose.
    Debug.WriteIf(generalSwitch.TraceVerbose, myObject.ToString() +
       " is not a valid object for category: ", category);

    // Write a second message if the TraceSwitch level is set to Error or higher.
    Debug.WriteLineIf(generalSwitch.TraceError, " Please use a different category.");
}
' Class-level declaration.
' Create a TraceSwitch.
Private Shared generalSwitch As New TraceSwitch("General", "Entire Application")


Public Shared Sub MyErrorMethod(myObject As Object, category As String)
    ' Write the message if the TraceSwitch level is set to Verbose.
    Debug.WriteIf(generalSwitch.TraceVerbose, myObject.ToString() & _
        " is not a valid object for category: ", category)
    
    ' Write a second message if the TraceSwitch level is set to Error or higher.
    Debug.WriteLineIf(generalSwitch.TraceError, " Please use a different category.")
End Sub

備註

根據預設,輸出會寫入 DefaultTraceListener實例。

category 參數可用來將輸出訊息分組。

這個方法會呼叫追蹤接聽程式的 TraceListener.Write 方法。

給繼承者的注意事項

你可以透過使用 If...Then 陳述式來減少安裝應用程式的效能損失,而不是用 WriteIf(Boolean, String) 陳述式。 以下兩個程式碼範例傳送相同的除錯訊息。 然而,第一個例子在追蹤關閉時速度快得多,因為若 mySwitch.TraceError 將 評估為 false,則不會呼叫 Write(String)。 第二個例子總是呼叫 WriteIf(Boolean, String),即使 mySwitch.TraceErrorfalse 且未產生追蹤輸出。 這可能導致不必要的執行任意複雜程式碼。

第一個例子:

if(mySwitch.TraceError)
    Debug.Write("aNumber = " + aNumber + " out of range");

第二個例子:

Debug.WriteIf(mySwitch.TraceError, "aNumber = " + aNumber + " out of range");

另請參閱

適用於