Compartilhar via


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

Guia de Programação C#

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)

Acessando atributos com reflexo (C# programação guia)

System.Reflection

Attribute