次の方法で共有


Debug.WriteIf メソッド (Boolean, String, String)

条件が true の場合、カテゴリ名とメッセージを Listeners コレクションのトレース リスナに書き込みます。

<Conditional("DEBUG")>
Overloads Public Shared Sub WriteIf( _   ByVal condition As Boolean, _   ByVal message As String, _   ByVal category As String _)
[C#]
[Conditional("DEBUG")]
public static void WriteIf(boolcondition,stringmessage,stringcategory);
[C++]
[Conditional("DEBUG")]
public: static void WriteIf(boolcondition,String* message,String* category);
[JScript]
public
   Conditional("DEBUG")
static function WriteIf(condition : Boolean,message : String,category : String);

パラメータ

  • condition
    メッセージを書き込む場合は true 。それ以外の場合は false
  • message
    書き込むメッセージ。
  • category
    出力を編成するために使用されるカテゴリ名。

解説

既定では、出力は DefaultTraceListener のインスタンスに書き込まれます。

Category パラメータは、出力メッセージをグループ化するために使用できます。

このメソッドは、トレース リスナの Write メソッドを呼び出します。

実装時の注意: WriteIf ステートメントの代わりに If...Then ステートメントを使用することによって、アプリケーション導入によるパフォーマンスの低下を最小限にとどめることができます。次の 2 つのコード例は、同じデバッグ メッセージを送信します。しかし、トレースがオフである場合は、最初の例の方がはるかに高速です。これは、 mySwitch.TraceErrorfalse として評価されると、 Write を呼び出さないからです。第 2 の例では、 mySwitch.TraceErrorfalse でトレース出力が生成されない場合でも、常に WriteIf が呼び出されます。これにより、必要以上に複雑なコードが、不必要に実行される可能性があります。

最初の例。

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

第 2 の例。

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

使用例

generalSwitch という名前の TraceSwitch を作成する例を次に示します。このスイッチは、コード サンプルの外部で設定されています。

スイッチが TraceLevel Verbose に設定されている場合は、この例では最初のエラー メッセージが Listeners に出力されます。 Listeners コレクションにリスナを追加する方法については、 TraceListenerCollection クラスのトピックを参照してください。

TraceLevel が Error 以上に設定されている場合、この例では、最初のメッセージと同じ行に 2 番目のエラー メッセージが表示されます。第 2 のメッセージの後に行終端記号があります。

 
' 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 'MyErrorMethod

[C#] 
// 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.");
 }


[C++] 
// Class-level declaration.
 // Create a TraceSwitch.
 static TraceSwitch* generalSwitch = new TraceSwitch(S"General", S"Entire Application");
 
public:
 static void MyErrorMethod(Object* myObject, String* category) {
    // Write the message if the TraceSwitch level is set to Verbose.
    Debug::WriteIf(generalSwitch->TraceVerbose, String::Concat( myObject, S" 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, S" Please use a different category.");
 }


[JScript] 
// Class level declaration.
 // Create a TraceSwitch.
 static var generalSwitch : TraceSwitch = new TraceSwitch("General", "Entire Application");
 
 static public function MyErrorMethod(myObject : Object, category : 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.");
 }

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

参照

Debug クラス | Debug メンバ | System.Diagnostics 名前空間 | Debug.WriteIf オーバーロードの一覧 | Debug | Trace | BooleanSwitch | TraceSwitch | TraceListener | DefaultTraceListener | ConditionalAttribute | ConditionalAttribute | ConditionalAttribute | ConditionalAttribute | ConditionalAttribute