ConditionalAttribute ConditionalAttribute ConditionalAttribute ConditionalAttribute Class

定義

指定した条件付きコンパイル シンボルが定義されていない場合、メソッド呼び出しまたは属性を無視するようコンパイラに指示します。Indicates to compilers that a method call or attribute should be ignored unless a specified conditional compilation symbol is defined.

public ref class ConditionalAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true)]
[System.Runtime.InteropServices.ComVisible(true)]
[System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=true)]
[System.Serializable]
public sealed class ConditionalAttribute : Attribute
type ConditionalAttribute = class
    inherit Attribute
Public NotInheritable Class ConditionalAttribute
Inherits Attribute
継承
ConditionalAttributeConditionalAttributeConditionalAttributeConditionalAttribute
属性

次の例は、ConditionalAttribute の使い方を示しています。The following example demonstrates the use of ConditionalAttribute. この例では使用条件が定義されている、 /defineコンパイラ オプション。The example assumes that the condition is defined with the /define compiler option. コンパイラ オプションを変更することで、異なる結果を得ることができます。You can obtain different results by changing the compiler option. 必要に応じて、コンパイラ オプションとして指定するのではなくサンプル コードのプラグマを使用して条件を定義できます。You can optionally define the conditions by using pragmas in the sample code instead of identifying them as compiler options.

#define CONDITION1
#define CONDITION2
using System;
using System.Diagnostics;

class Test
{
    static void Main()
    {               
        Console.WriteLine("Calling Method1");
        Method1(3);
        Console.WriteLine("Calling Method2");
        Method2();
        
        Console.WriteLine("Using the Debug class");
        Debug.Listeners.Add(new ConsoleTraceListener());
        Debug.WriteLine("DEBUG is defined");
    }
    
    [Conditional("CONDITION1")]
    public static void Method1(int x)
    {
        Console.WriteLine("CONDITION1 is defined");
    }
    
    [Conditional("CONDITION1"), Conditional("CONDITION2")]  
    public static void Method2()
    {
        Console.WriteLine("CONDITION1 or CONDITION2 is defined");
    }
}

/*
When compiled as shown, the application (named ConsoleApp) 
produces the following output.

Calling Method1
CONDITION1 is defined
Calling Method2
CONDITION1 or CONDITION2 is defined
Using the Debug class
DEBUG is defined
*/
#Const CONDITION1 = True
#Const CONDITION2 = True
Imports System
Imports System.Diagnostics

Class Test

    Shared Sub Main()
        Console.WriteLine("Calling Method1")
        Method1(3)
        Console.WriteLine("Calling Method2")
        Method2()
        
        Console.WriteLine("Using the Debug class")
        Debug.Listeners.Add(New ConsoleTraceListener())
        Debug.WriteLine("DEBUG is defined")
    End Sub
       
    <ConditionalAttribute("CONDITION1")> _
    Shared Sub Method1(x As Integer)
        Console.WriteLine("CONDITION1 is defined")
    End Sub
    
    <ConditionalAttribute("CONDITION1"), ConditionalAttribute("CONDITION2")> _
    Shared Sub Method2()
        Console.WriteLine("CONDITION1 or CONDITIOIN2 is defined")
    End Sub
    
End Class


' When compiled as shown, the application (named ConsoleApp) 
' produces the following output.

'Calling Method1
'CONDITION1 is defined
'Calling Method2
'CONDITION1 or CONDITION2 is defined
'Using the Debug class
'DEBUG is defined

注釈

適用することができます、ConditionalAttributeメソッドおよびクラス属性します。You can apply the ConditionalAttribute attribute to methods and classes. ただし、クラス上での使用はから派生した型に対してのみ有効なAttributeします。However, its use on classes is valid only for types that are derived from Attribute. ConditionalAttribute 無視されますか、その他の種類に適用する場合、コンパイラの警告またはエラー メッセージが生成されます。ConditionalAttribute either will be ignored or will produce a compiler warning or error message if you apply it to any other type.

適用するConditionalAttributeメソッドにコンパイラに指示を Microsoft intermediate language (MSIL) 条件付きコンパイル シンボルをしない限り、関連付けられているメソッドの呼び出しをコンパイルされないことConditionalAttributeが定義されています。Applying ConditionalAttribute to a method indicates to compilers that a call to the method should not be compiled into Microsoft intermediate language (MSIL) unless the conditional compilation symbol that is associated with ConditionalAttribute is defined. Void は返されませんをメソッドにこの属性を適用する場合、Visual Studio でのコンパイル エラーが表示されます。You will get a compilation error in Visual Studio if you apply this attribute to a method that does not return void. 適用ConditionalAttribute属性に、属性出力しないメタデータに条件付きコンパイル シンボルが定義されていない場合を示します。Applying ConditionalAttribute to an attribute indicates that the attribute should not be emitted to metadata unless the conditional compilation symbol is defined. 任意の引数が、メソッドに渡すか、属性は、コンパイラによってまだ型チェックします。Any arguments passed to the method or attribute are still type-checked by the compiler.

次の手法を使用して、条件付きコンパイル シンボルを定義できます。You can use the following techniques to define conditional compilation symbols:

  • コンパイラのコマンド ライン オプションを使用して、たとえば、 /define: デバッグします。Use compiler command-line options; for example, /define:DEBUG.

  • オペレーティング システムのシェルで環境変数を使用たとえば、デバッグ設定 = 1します。Use environment variables in the operating system shell; for example, set DEBUG=1.

  • はソース コードでのプラグマを使用します。たとえば、ようコンパイル変数を定義します。Use pragmas in the source code; for example, define the compilation variable as follows:

    #define DEBUG  
    
    #Const DEBUG=True  
    

    変数を未定義にするには、次の手順を使用します。To undefine the variable, use the following:

    #undef DEBUG  
    
    #Const DEBUG=False  
    

無視する共通言語仕様 (CLS) に準拠するコンパイラが許可されているConditionalAttributeします。Compilers that comply with the Common Language Specification (CLS) are permitted to ignore ConditionalAttribute. C#、Visual Basic、および C++ のコンパイラ サポートConditionalAttribute; JScript コンパイラは、属性をサポートしていません。The C#, Visual Basic, and C++ compilers support ConditionalAttribute; the JScript compiler does not support the attribute.

注意

Visual basic で、AddressOf演算子はこの属性では影響ありません。In Visual Basic, the AddressOf operator is not affected by this attribute. たとえば、Call CType(AddressOf delegate, Action)続かなければdelegateですが、Call delegate()いない可能性があります。For example, Call CType(AddressOf delegate, Action) always invokes delegate, although Call delegate() might not.

ConditionalAttribute 定義されているメソッドに適用される、DebugTraceクラス。ConditionalAttribute is applied to the methods that are defined in the Debug and Trace classes.

属性を使用する方法の詳細については、次を参照してください。属性します。For more information about how to use attributes, see Attributes.

コンストラクター

ConditionalAttribute(String) ConditionalAttribute(String) ConditionalAttribute(String) ConditionalAttribute(String)

ConditionalAttribute クラスの新しいインスタンスを初期化します。Initializes a new instance of the ConditionalAttribute class.

プロパティ

ConditionString ConditionString ConditionString ConditionString

ConditionalAttribute 属性に関連付けられた条件付きコンパイル シンボルを取得します。Gets the conditional compilation symbol that is associated with the ConditionalAttribute attribute.

TypeId TypeId TypeId TypeId

派生クラスで実装されると、この Attribute の一意の識別子を取得します。When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

メソッド

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

このインスタンスが、指定されたオブジェクトと等価であるかどうかを示す値を返します。Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

このインスタンスのハッシュ コードを返します。Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

派生クラスでオーバーライドされるとき、このインスタンスの値が派生クラスの既定値であるかどうかを示します。When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

明示的なインターフェイスの実装

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

一連の名前を対応する一連のディスパッチ識別子に割り当てます。Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

適用対象