Debug.WriteIf Метод

Определение

Записывает сведения об отладке в прослушиватели трассировки в коллекции Listeners, если условие имеет значение true.

Перегрузки

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

Если condition имеет значение true, записывает имя категории и сообщение в прослушиватели трассировки в Listeners коллекции.

WriteIf(Boolean, Object)

Записывает значение метода ToString() объекта в прослушиватели трассировки в коллекции Listeners, если условие — true.

WriteIf(Boolean, String)

Записывает сообщение в прослушиватели трассировки в коллекции Listeners, если задано условие true.

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

Записывает имя категории и сообщение в прослушиватели трассировки в коллекции, Listeners если заданное условие равно true.

WriteIf(Boolean, Object, String)

Записывает имя категории и значение метода ToString() объекта в прослушиватели трассировки в коллекции Listeners, если задано условие true.

WriteIf(Boolean, String, String)

Записывает имя категории и сообщение в прослушиватели трассировки в коллекции Listeners, если условие равно true.

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

Исходный код:
Debug.cs
Исходный код:
Debug.cs
Исходный код:
Debug.cs

Если condition имеет значение true, записывает имя категории и сообщение в прослушиватели трассировки в Listeners коллекции.

public:
 static void WriteIf(bool condition, System::Diagnostics::Debug::WriteIfInterpolatedStringHandler % message);
[System.Diagnostics.Conditional("DEBUG")]
public static void WriteIf (bool condition, ref System.Diagnostics.Debug.WriteIfInterpolatedStringHandler message);
[<System.Diagnostics.Conditional("DEBUG")>]
static member WriteIf : bool * WriteIfInterpolatedStringHandler -> unit
Public Shared Sub WriteIf (condition As Boolean, ByRef message As Debug.WriteIfInterpolatedStringHandler)

Параметры

condition
Boolean

Условное выражение для вычисления. Если условие имеет значение true, значение записывается в прослушиватели трассировки в коллекции.

message
Debug.WriteIfInterpolatedStringHandler

Сообщение для записи, если condition имеет значение true.

Атрибуты

Комментарии

Эта перегрузка появилась в .NET 6 для повышения производительности. По сравнению с перегрузками, которые принимают String параметр, эта перегрузка оценивает все интерполированные элементы форматирования строк, только если сообщение требуется.

По умолчанию выходные данные записываются в экземпляр DefaultTraceListener.

Используйте параметр для группировки category выходных сообщений.

Этот метод вызывает Write метод прослушивателя трассировки.

См. также раздел

Применяется к

WriteIf(Boolean, Object)

Исходный код:
Debug.cs
Исходный код:
Debug.cs
Исходный код:
Debug.cs

Записывает значение метода 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")]
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.

Атрибуты

Примеры

В следующем примере создается объект с TraceSwitch именем generalSwitch. Этот параметр задается за пределами примера кода.

Если для параметра задано TraceLevelError значение или выше, в примере выводится первое имя параметра значения в Listeners. Сведения о добавлении прослушивателя в коллекцию Listeners см. в TraceListenerCollection классе .

Затем, если TraceLevel для задано значение Verbose, в примере выводится сообщение в той же строке, что и первое сообщение. Признак конца строки следует за вторым сообщением.

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

public:
   static void MyErrorMethod( Object^ myObject )
   {
      // Write the message if the TraceSwitch level is set to Error or higher.
      #if defined(DEBUG)
      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." );
      #endif
   }
// 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 инструкций вместо операторов using WriteIf(Boolean, String) . В следующих двух примерах кода отправляется одно и то же сообщение об отладке. Однако первый пример выполняется гораздо быстрее при отключении трассировки, так как если mySwitch.TraceError значение принимает значение false, вы не вызываете Write(String). Во втором примере всегда вызывается WriteIf(Boolean, String), даже если mySwitch.TraceError имеет значение и false выходные данные трассировки не создаются. Это может привести к ненужным выполнению произвольно сложного кода.

Первый пример:

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

Второй пример:

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

См. также раздел

Применяется к

WriteIf(Boolean, String)

Исходный код:
Debug.cs
Исходный код:
Debug.cs
Исходный код:
Debug.cs

Записывает сообщение в прослушиватели трассировки в коллекции 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")]
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

Записываемое сообщение.

Атрибуты

Примеры

В следующем примере создается объект с TraceSwitch именем generalSwitch. Этот параметр задается за пределами примера кода.

Если параметр имеет значение TraceLevelError или выше, в примере выводится первое сообщение об ошибке в Listeners. Сведения о добавлении прослушивателя в коллекцию Listeners см. в TraceListenerCollection разделе класс .

Затем, если TraceLevel для задано значение Verbose, в примере выводится второе сообщение об ошибке в той же строке, что и первое сообщение. Признак конца строки следует за вторым сообщением.

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

public:
   static void MyErrorMethod()
   {
      // Write the message if the TraceSwitch level is set to Error or higher.
      #if defined(DEBUG)
      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." );
      #endif
   }
// 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 инструкций вместо операторов using WriteIf(Boolean, String) . В следующих двух примерах кода отправляется одно и то же сообщение об отладке. Однако первый пример выполняется гораздо быстрее при отключении трассировки, так как если mySwitch.TraceError значение принимает значение false, вы не вызываете Write(String). Во втором примере всегда вызывается WriteIf(Boolean, String), даже если mySwitch.TraceError имеет значение и false выходные данные трассировки не создаются. Это может привести к ненужным выполнению произвольно сложного кода.

Первый пример:

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

Второй пример:

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

См. также раздел

Применяется к

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

Исходный код:
Debug.cs
Исходный код:
Debug.cs
Исходный код:
Debug.cs

Записывает имя категории и сообщение в прослушиватели трассировки в коллекции, Listeners если заданное условие равно true.

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

Параметры

condition
Boolean

Условное выражение для вычисления. Если условие имеет значение true, сообщение записывается в прослушиватели трассировки в коллекции.

message
Debug.WriteIfInterpolatedStringHandler

Сообщение для записи.

category
String

Имя категории, используемое для систематизации выходных данных.

Атрибуты

Комментарии

Эта перегрузка появилась в .NET 6 для повышения производительности. По сравнению с перегрузками, которые принимают String параметр, эта перегрузка оценивает все интерполированные элементы форматирования строк, только если сообщение требуется.

По умолчанию выходные данные записываются в экземпляр DefaultTraceListener.

Используйте параметр для группировки category выходных сообщений.

Этот метод вызывает Write метод прослушивателя трассировки.

См. также раздел

Применяется к

WriteIf(Boolean, Object, String)

Исходный код:
Debug.cs
Исходный код:
Debug.cs
Исходный код:
Debug.cs

Записывает имя категории и значение метода 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")]
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

Имя категории, используемое для систематизации выходных данных.

Атрибуты

Примеры

В следующем примере создается объект с TraceSwitch именем generalSwitch. Этот параметр задается за пределами примера кода.

Если параметр имеет значение TraceLevelVerbose, в примере выводится имя myObject и в categoryListeners. Сведения о добавлении прослушивателя в коллекцию Listeners см. в TraceListenerCollection классе .

Затем, если TraceLevel задано значение Error или выше, в примере выводится второе сообщение об ошибке в той же строке, что и первое сообщение. Признак конца строки следует за вторым сообщением.

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

public:
   static void MyErrorMethod( Object^ myObject, String^ category )
   {
      // Write the message if the TraceSwitch level is set to Error or higher.
      #if defined(DEBUG)
      Debug::WriteIf( generalSwitch->TraceVerbose, myObject, category );
      
      // Write a second message if the TraceSwitch level is set to Verbose.
      Debug::WriteLineIf( generalSwitch->TraceError, 
         " Object is not valid for this category." );
      #endif
   }
// 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 инструкций вместо операторов using WriteIf(Boolean, String) . В следующих двух примерах кода отправляется одно и то же сообщение об отладке. Однако первый пример выполняется гораздо быстрее при отключении трассировки, так как если mySwitch.TraceError значение принимает значение false, вы не вызываете Write(String). Во втором примере всегда вызывается WriteIf(Boolean, String), даже если mySwitch.TraceError имеет значение и false выходные данные трассировки не создаются. Это может привести к ненужным выполнению произвольно сложного кода.

Первый пример:

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

Второй пример:

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

См. также раздел

Применяется к

WriteIf(Boolean, String, String)

Исходный код:
Debug.cs
Исходный код:
Debug.cs
Исходный код:
Debug.cs

Записывает имя категории и сообщение в прослушиватели трассировки в коллекции 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")]
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

Имя категории, используемое для систематизации выходных данных.

Атрибуты

Примеры

В следующем примере создается объект с TraceSwitch именем generalSwitch. Этот параметр задается за пределами примера кода.

Если параметр имеет значение TraceLevelVerbose, в примере выводится первое сообщение об ошибке в Listeners. Сведения о добавлении прослушивателя в коллекцию Listeners см. в TraceListenerCollection разделе класс .

Затем, если TraceLevel для задано значение Error или выше, в примере выводится второе сообщение об ошибке в той же строке, что и первое сообщение. Признак конца строки следует за вторым сообщением.

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

public:
   static void MyErrorMethod( Object^ myObject, String^ category )
   {
      // Write the message if the TraceSwitch level is set to Error or higher.
      #if defined(DEBUG)
      Debug::WriteIf( generalSwitch->TraceVerbose, String::Concat( myObject, 
         " is not a valid object for category: " ), category );
      
      // Write a second message if the TraceSwitch level is set to Verbose.
      Debug::WriteLineIf( generalSwitch->TraceError, 
         " Please use a different category." );
      #endif
   }
// 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 инструкций вместо операторов using WriteIf(Boolean, String) . В следующих двух примерах кода отправляется одно и то же сообщение об отладке. Однако первый пример выполняется гораздо быстрее при отключении трассировки, так как если mySwitch.TraceError значение принимает значение false, вы не вызываете Write(String). Во втором примере всегда вызывается WriteIf(Boolean, String), даже если mySwitch.TraceError имеет значение и false выходные данные трассировки не создаются. Это может привести к ненужным выполнению произвольно сложного кода.

Первый пример:

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

Второй пример:

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

См. также раздел

Применяется к