TheDeveloperBlog.com


C# Pragma Directive

Pragma directive. The #pragma directive 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. The compiler reports these errors to improve code quality. In this example, the if (false) statement results in unreachable code.

Unreachable Code Detected

Tip: By wrapping the #pragma warning disable directive and #pragma warning restore directive around the statement, we can hide the warning.

So: When you compile this program, no warnings are reported by the C# compiler.

Compiler
C# program that uses pragma directive

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.

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.

Tip: This is probably more trouble than it is worth. It might be better to just disable all warnings in small blocks of code.


Discussion. 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. If you expect a certain warning to occur, and don't want to fix it, #pragma directives are useful.

Compile-Time Error