Skip to content

EN CSharp Directive Conditional

Codex edited this page Oct 11, 2026 · 2 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Conditional compilation

Handbook C# · Practical Guide

Selects parts of the source code during compilation by symbols, not by runtime variables.

Simple example (Example.cs)

Save this example separately as Example.cs. Run it independently of the other examples on this page.

Example.cs:

// PROJECT-EXAMPLE
#define REPORT
#if REPORT
System.Console.WriteLine("Enabled");
#else
System.Console.WriteLine("Disabled");
#endif

Result:

Enabled

Syntax

#if FEATURE
// code
#elif OTHER
// other code
#else
// fallback
#endif

Example 1

#define FEATURE
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

public static class Program
{
    public static async Task Main(string[] args)
    {
        #if FEATURE
        Console.WriteLine("Feature enabled");
        #else
        Console.WriteLine("Fallback");
        #endif
    }
}

Example 2

#define SECOND
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

public static class Program
{
    public static async Task Main(string[] args)
    {
        #if FIRST
        Console.WriteLine("First");
        #elif SECOND
        Console.WriteLine("Second");
        #else
        Console.WriteLine("Neither");
        #endif
    }
}

Official source: Microsoft Learn.

Clone this wiki locally