Compiler Error CS0116

A namespace does not directly contain members such as fields or methods

Inside a namespace, the compiler only accepts classes, structures, unions, enumerations, interfaces, and delegates. This error is often generated by developers from a C/C++ background who forget that in C#, methods and variables must be declared and defined within a struct or class. For more information, see General Structure of a C# Program (C# Programming Guide).

Example

The following sample generates CS0116:

// CS0116.cs
namespace x
{
    using System;

    // method must be in class/struct
    void Method(string str) // CS0116
    {
        Console.WriteLine(str);
    }
    // To fix the error, you must
    // enclose a method in a class:
    class Program
    {
        void Method2(string str)
        {
            Console.WriteLine(str);
        }
    }
}

See Also

Reference

General Structure of a C# Program (C# Programming Guide)

Classes and Structs (C# Programming Guide)

Namespaces (C# Programming Guide)

Change History

Date

History

Reason

October 2008

Added text and code comments.

Customer feedback.