C# Pragma Directive

Pound (#) symbol

#pragma disables the reporting of a warning. It is useful when you understand and expect the warning—but still want to disable it. With #pragma we can disable a specific warning or all warnings.

Example

As we begin, please remember that when the C# compiler detects unreachable code, it will report a warning. In this example, the if (false) statement results in unreachable code. By wrapping the #pragma warning disable directive and #pragma warning restore directive around the problematic statement, we can hide the warning. When you compile this program, no warnings are reported.

This C# example program shows how to use the #pragma directive.

Program that uses #pragma directive [C#]

using System;

class Program
{
    static void Main()
    {
	// This example has unreachable code!
	// ... The pragma directives hide the warning.
#pragma warning disable
	if (false)
	{
	    Console.WriteLine("Perls");
	}
#pragma warning restore
    }
}

Result
    When compiled, no warnings are issued.
The C# programming language

Specifying specific warnings. You can optionally add another value after the directives. As the C# specification shows, you can use #pragma warning disable 612 to disable the C# compiler's warning number 612. This is probably more trouble than it is worth; it might be better to just disable all warnings in small blocks of code.

Is it useful?

Question and answer

I think the #pragma warning disable and restore directives are useful in many programs. When developing, I sometimes will use the if (false) construction to comment out code but compile it anyways. This ensures that the code will not stop compiling and refactoring will update it. I can use the #pragma directives to indicate that I know the code is unreachable already and don't want to fix it.

Summary

The #pragma warning disable and restore directives give you the ability to influence how the compiler reports warnings in the C# language. If you expect a certain warning to occur, and don't want to fix it, the #pragma directives shown here are useful.

Directives
.NET