Skip to content

EN CSharp Directive Define

Codex edited this page Oct 11, 2026 · 2 revisions

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

Compile symbols

Handbook C# · Practical Guide

#define defines a file-local conditional-compilation symbol; #undef removes that definition. Place these directives before the first ordinary token in the file.

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
#undef REPORT
#if REPORT
System.Console.WriteLine("Enabled");
#else
System.Console.WriteLine("Disabled");
#endif

Result:

Disabled

Syntax

#define NAME / #undef NAME

Example 1

#define REPORT
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 REPORT
        Console.WriteLine("Report");
        #endif
    }
}

Example 2

#define REPORT
#undef REPORT
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 REPORT
        Console.WriteLine("Report");
        #else
        Console.WriteLine("Disabled");
        #endif
    }
}

Official source: Microsoft Learn.

Clone this wiki locally