C# Namespace
Namespaces play an important role in managing related classes in C#. The .NET Framework uses namespaces to organize its built-in classes. For example, there are some built-in namespaces in .NET such as System, System.Linq, System.Web, etc. Each namespace contains related classes.
A namespace is a container for classes and namespaces. The namespace also gives unique names to its classes thereby you can have the same class name in different namespaces.
In C#, a namespace can be defined using the namespace keyword.
namespace School
{
// define classes here
}
The following namespace contains the Student
and Course
classes.
namespace School
{
class Student
{
}
class Course
{
}
}
Classes under the same namespace can be referred to as namespace.classname
syntax.
For example, the Student
class can be accessed as School.Student
.
namespace CSharpTutorials
{
class Program
{
static void Main(string[] args)
{
School.Student std = new School.Student();
School.Course cs = new School.Course();
}
}
}
To use classes under a namespace without the fully qualified name, import the namespace with the using
keyword at the top of C# class file.
using System; //built-in namespace
using School;
namespace CSharpTutorials
{
class Program
{
static void Main(string[] args)
{
Student std = new Student();
}
}
}
A namespace can contain other namespaces. Inner namespaces can be separated using (.).
namespace School.Education
{
class Student
{
}
}
In the above example, the fully qualified class name is School.Education.Student
.
Beginning with C# 10, you can declare a namespace for all types defined in that file without wrapping classes inside curly braces { .. }
, as shown below.
namespace School.Education
class Student
{
}