내보내기(0) 인쇄
모두 확장
이 항목은 아직 평가되지 않았습니다.- 이 항목 평가

ConditionalAttribute 클래스

업데이트: 2007년 11월

지정한 조건부 컴파일 기호가 정의되어 있지 않으면 메서드 호출이나 특성을 무시하도록 컴파일러에 알립니다.

네임스페이스:  System.Diagnostics
어셈블리:  mscorlib(mscorlib.dll)

[SerializableAttribute]
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true)]
[ComVisibleAttribute(true)]
public sealed class ConditionalAttribute : Attribute
/** @attribute SerializableAttribute */ 
/** @attribute AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true) */
/** @attribute ComVisibleAttribute(true) */
public final class ConditionalAttribute extends Attribute
public final class ConditionalAttribute extends Attribute

ConditionalAttribute 특성은 메서드와 클래스에 적용할 수 있습니다. 그러나 클래스에 사용하는 경우 Attribute에서 파생된 형식이어야 합니다. ConditionalAttribute를 다른 형식에 적용할 경우 무시되거나 컴파일러 경고 또는 오류 메시지가 생성됩니다.

참고:

.NET Framework 버전 1.0과 1.1에서는 ConditionalAttribute 특성을 메서드에만 적용할 수 있습니다.

ConditionalAttribute를 메서드에 적용하는 경우 이 특성은 ConditionalAttribute와 관련된 조건부 컴파일 기호가 정의되어 있지 않으면 메서드에 대한 호출을 MSIL(Microsoft Intermediate Language)로 컴파일하지 않도록 컴파일러에 알립니다. ConditionalAttribute를 특성에 적용하는 경우 이 특성은 조건부 컴파일 기호가 정의되어 있지 않으면 특성을 메타데이터로 내보내지 않도록 알립니다. 메서드나 특성에 전달된 모든 인수의 형식은 컴파일러에서 확인합니다.

다음과 같은 방법을 통해 조건부 컴파일 기호를 정의할 수 있습니다.

  • 컴파일러 명령줄 옵션(예: /define:DEBUG)

  • 운영 체제 셸의 환경 변수(예: set DEBUG=1)

  • 소스 코드의 pragma(예: 컴파일 변수를 정의하는 #define DEBUG 및 컴파일 변수 정의를 해제하는 #undef DEBUG)

CLS(공용 언어 사양)를 따르는 컴파일러는 ConditionalAttribute를 무시할 수 있습니다. C#, J# 및 Visual Basic 컴파일러에서는 ConditionalAttribute를 지원하지만 C++ 및 JScript 컴파일러에서는 지원하지 않습니다.

ConditionalAttributeDebugTrace 클래스에 정의되어 있는 메서드에 적용됩니다.

특성을 사용하는 방법에 대한 자세한 내용은 특성을 사용하여 메타데이터 확장을 참조하십시오.

다음 코드 예제에서는 ConditionalAttribute를 사용하는 방법을 보여 줍니다. 이 예제에서는 /define 컴파일러 옵션에 조건이 정의되어 있다고 가정합니다. 컴파일러 옵션을 변경하여 다른 결과를 얻을 수 있습니다. 필요한 경우 샘플 코드에서 컴파일러 옵션으로 조건을 나타내는 대신 조건을 직접 정의할 수도 있습니다.

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.

csc ConsoleApp.cs
Calling Method1
Calling Method2
Using the Debug class

csc /define:CONDITION1 ConsoleApp.cs
Calling Method1
CONDITION1 is defined
Calling Method2
CONDITION1 or Condition2 is defined
Using the Debug class

csc /define:Condition2 ConsoleApp.cs
Calling Method1
Calling Method2
CONDITION1 or Condition2 is defined
Using the Debug class

csc /define:DEBUG ConsoleApp.cs
Calling Method1
Calling Method2
Using the Debug class
DEBUG is defined
*/


System.Object
  System.Attribute
    System.Diagnostics.ConditionalAttribute
이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

.NET Framework

3.5, 3.0, 2.0, 1.1, 1.0에서 지원

.NET Compact Framework

3.5, 2.0, 1.0에서 지원

XNA Framework

2.0, 1.0에서 지원
이 정보가 도움이 되었습니까?
(1500자 남음)
의견을 주셔서 감사합니다.

커뮤니티 추가 항목

추가
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2014 Microsoft. All rights reserved.