Namespaces are used to organize the classes. It helps to control the scope of methods and classes in larger
.Net programming projects. In simpler words you can say that it provides a way to keep one set of names(like class names) different from other sets of names. The biggest advantage of using namespace is that the class names which are declared in one namespace will not clash with the same class names declared in another namespace. It is also referred as
named group of classes having common features. The members of a namespace can be
namespaces, interfaces, structures, and delegates.
Defining a Namespace
To define a namespace in C#, we will use the
namespace keyword followed by the name of the namespace and curly braces containing the body of the namespace as follows:
Syntax:
namespace name_of_namespace {
// Namespace (Nested Namespaces)
// Classes
// Interfaces
// Structures
// Delegates
}
Example:
// defining the namespace name1
namespace name1
{
// C1 is the class in the namespace name1
class C1
{
// class code
}
}
Accessing the Members of Namespace
The members of a namespace are accessed by using dot(.) operator. A class in C# is fully known by its respective namespace.
Syntax:
[namespace_name].[member_name]
Note:
- Two classes with the same name can be created inside 2 different namespaces in a single program.
- Inside a namespace, no two classes can have the same name.
- In C#, the full name of the class starts from its namespace name followed by dot(.) operator and the class name, which is termed as the fully qualified name of the class.
Example:
CSharp
// C# program to illustrate the
// use of namespaces
// namespace declaration
namespace first {
// name_1 namespace members
// i.e. class
class Geeks_1
{
// function of class Geeks_1
public static void display()
{
// Here System is the namespace
// under which Console class is defined
// You can avoid writing System with
// the help of "using" keyword discussed
// later in this article
System.Console.WriteLine("Hello Geeks!");
}
}
/* Removing comment will give the error
because no two classes can have the
same name under a single namespace
class Geeks_1
{
} */
} // ending of first namespace
// Class declaration
class Geeks_2
{
// Main Method
public static void Main(String []args)
{
// calling the display method of
// class Geeks_1 by using two dot
// operator as one is use to access
// the class of first namespace and
// another is use to access the
// static method of class Geeks_1.
// Termed as fully qualified name
first.Geeks_1.display();
}
}
Output:
Hello Geeks!
In the above example:
- In System.Console.WriteLine()" "System" is a namespace in which we have a class named "Console" whose method is "WriteLine()".
- It is not necessary to keep each class in C# within Namespace but we do it to organize our code well.
- Here "." is the delimiter used to separate the class name from the namespace and function name from the classname.
The using keyword
It is not actually practical to call the function or class(or you can say members of a namespace) every time by using its fully qualified name. In the above example,
System.Console.WriteLine("Hello Geeks!"); and
first.Geeks_1.display(); are the fully qualified name. So C# provides a keyword "
using" which help the user to avoid writing fully qualified names again and again. The user just has to mention the namespace name at the starting of the program and then he can easily avoid the use of fully qualified names.
Syntax:
using [namespace_name][.][sub-namespace_name];
In the above syntax,
dot(.) is used to include subnamespace names in the program.
Example:
// predefined namespace name
using System;
// user-defined namespace name
using name1
// namespace having subnamespace
using System.Collections.Generic;
Program:
CSharp
// C# program to illustrate the
// use of using keyword
// predefined namespace
using System;
// user defined namespace
using first;
// namespace declaration
namespace first {
// name_1 namespace members
// i.e. class
class Geeks_1
{
// function of class Geeks_1
public static void display()
{
// No need to write fully qualified name
// as we have used "using System"
Console.WriteLine("Hello Geeks!");
}
}
} // ending of first namespace
// Class declaration
class Geeks_2
{
// Main Method
public static void Main(String []args)
{
// calling the display method of
// class Geeks_1 by using only one
// dot operator as display is the
// static method of class Geeks_1
Geeks_1.display();
}
}
Output:
Hello Geeks!
Nested Namespaces
You can also define a namespace into another namespace which is termed as the nested namespace. To access the members of nested namespace user has to use the dot(.) operator.
For example, Generic is the nested namespace in the
collections namespace as
System.Collections.Generic
Syntax:
namespace name_of_namespace_1
{
// Member declarations & definitions
namespace name_of_namespace_2
{
// Member declarations & definitions
.
.
}
}
Program:
CSharp
// C# program to illustrate use of
// nested namespace
using System;
// You can also use
// using Main_name.Nest_name;
// to avoid the use of fully
// qualified name
// main namespace
namespace Main_name
{
// nested namespace
namespace Nest_name
{
// class within nested namespace
class Geeks_1
{
// Constructor of nested
// namespace class Geeks_1
public Geeks_1() {
Console.WriteLine("Nested Namespace Constructor");
}
}
}
}
// Driver Class
class Driver
{
// Main Method
public static void Main(string[] args)
{
// accessing the Nested Namespace by
// using fully qualified name
// "new" is used as Geeks_1()
// is the Constructor
new Main_name.Nest_name.Geeks_1();
}
}
Output:
Nested Namespace Constructor
Similar Reads
How to use :: Namespace Alias Qualifier in C#
Namespace Alias Qualifier(::) makes the use of alias name in place of longer namespace and it provides a way to avoid ambiguous definitions of the classes. It is always positioned between two identifiers. The qualifier looks like two colons(::) with an alias name and the class name. It can be global
2 min read
C++ vs C#
C++ and C# both are commonly used programming languages and came up with different powerful features used in different use cases. In this article, we are going to explore the common differences between these two programming languages based on their distinct features, use cases, and ecosystems.C# is
7 min read
C# Identifiers
In programming languages, identifiers are used for identification purposes. Or in other words, identifiers are the user-defined name of the program components. In C#, an identifier can be a class name, method name, variable name, or label. Example: public class GFG { static public void Main () { int
2 min read
Preprocessor Directives in C#
Preprocessor Directives in C# tell the compiler to process the given information before actual compilation of the program starts. It begins with a hashtag symbol (#) and since these preprocessors are not statements so no semi-colon is appended at the end. The C# compiler does not have a separate pre
5 min read
.NET Framework Class Library (FCL)
The Framework Class Library or FCL provides the system functionality in the .NET Framework as it has various classes, data types, interfaces, etc. to perform multiple functions and build different types of applications such as desktop applications, web applications, mobile applications, etc. The Fra
3 min read
C# Interview Questions and Answers
C# is the most popular general-purpose programming language and was developed by Microsoft in 2000, renowned for its robustness, flexibility, and extensive application range. It is simple and has an object-oriented programming concept that can be used for creating different types of applications.Her
15+ min read
C# .NET Framework (Basic Architecture and Component Stack)
C# (C-Sharp) is a modern, object-oriented programming language developed by Microsoft in 2000. It is a part of the .NET ecosystem and is widely used for building desktop, web, mobile, cloud, and enterprise applications. This is originally tied to the .NET Framework, C# has evolved to be the primary
6 min read
C# Hello World
The Hello World Program is the most basic program when we dive into a new programming language. This simply prints "Hello World!" on the console. In C#, a basic program consists of the following:A Namespace DeclarationClass Declaration & DefinitionClass Members(like variables, methods, etc.)Main
4 min read
Hello World Program : First program while learning Programming
In this article, I'll show you how to create your first Hello World computer program in various languages. Along with the program, comments are provided to help you better understand the terms and keywords used in theLearning program. Programming can be simplified as follows: Write the program in a
6 min read
Namespace in C++
Name conflicts in C++ happen when different parts of a program use the same name for variables, functions, or classes, causing confusion for the compiler. To avoid this, C++ introduce namespace.Namespace is a feature that provides a way to group related identifiers such as variables, functions, and
6 min read