Condicional (guia de programação translation from VPE for Csharp)
Torna a execução de um método dependente de um identificador de pré-processamento.The Conditional atributo é um alias para ConditionalAttributee pode ser aplicado a um método ou um atributo classe.
Neste exemplo, Conditional é aplicada a um método para ativar ou desabilitar a exibição de informações de diagnóstico de programa específico:
#define TRACE_ON
using System;
using System.Diagnostics;
public class Trace
{
[Conditional("TRACE_ON")]
public static void Msg(string msg)
{
Console.WriteLine(msg);
}
}
public class ProgramClass
{
static void Main()
{
Trace.Msg("Now in Main...");
Console.WriteLine("Done.");
}
}
Se o TRACE_ON identificador não está definido, nenhuma saída de rastreamento será exibida.
The Conditional em geral, o atributo é usado com o DEBUG identificador para ativar o rastreamento e recursos de registrar registrar registrar em log para compilações de depurar, mas não na versão constrói como este:
[Conditional("DEBUG")]
static void DebugMethod()
{
}
Comentários
Quando um método marcado sistema autônomo condicional é chamado, a presença ou ausência do símbolo especificado pré-processamento determina se a telefonar é incluída ou omitida.Se o símbolo é definido, a telefonar será incluída; caso contrário, a telefonar for omitida.Usando Conditional é um cartucho de limpeza mais elegante e menos propensa alternativa para colocar métodos dentro # IF and # endif, como este:
#if DEBUG
void ConditionalMethod()
{
}
#endif
Um método condicional deve ser um método em uma declaração classe ou struct e deve ter um tipo de retorno de void.
Usando vários identificadores
Se um método tem vários Conditional atributos, uma telefonar para o método é incluída se pelo menos um dos símbolos condicionais for definido (em outras palavras, os símbolos são logicamente ORed juntos). Neste exemplo, a presença de um dos A ou B resultará em uma telefonar de método:
[Conditional("A"), Conditional("B")]
static void DoIfAorB()
{
// ...
}
Para obter o efeito de forma lógica and símbolos, você pode definir métodos condicionais seriais.Por exemplo, o segundo método abaixo será executado somente se ambos os A e B são definidos:
[Conditional("A")]
static void DoIfA()
{
DoIfAandB();
}
[Conditional("B")]
static void DoIfAandB()
{
// Code to execute when both A and B are defined...
}
Uso condicional com classes de atributo
The Conditional atributo também pode ser aplicado a uma definição de classe de atributos. Neste exemplo, de atributo personalizadoDocumentation apenas adicionará informações para os metadados se depurar está definido.
[Conditional("DEBUG")]
public class Documentation : System.Attribute
{
string text;
public Documentation(string text)
{
this.text = text;
}
}
class SampleClass
{
// This attribute will only be included if DEBUG is defined.
[Documentation("This method displays an integer.")]
static void DoWork(int i)
{
System.Console.WriteLine(i.ToString());
}
}
Consulte também
Conceitos
Referência
Reflexo (guia de programação C#)
Atributos (guia de programação C#)
Destinos de atributo disambiguating (guia de programação translation from VPE for Csharp)
Criando atributos personalizados (guia de programação translation from VPE for Csharp)