CSharp – Namespace

Defining a namespace

Con la keyword ‘namespace’ possiamo definire un set di ‘nomi’ riservati ad un determinato scopo comune.
All’interno di un ‘namespace’ ci posso essere classi, funzioni e variabili.

Syntax:

...
// Define a namespace
namespace namespace_name
{
   // code declarations
}
....
// Call a namespace
namespace_name.item_name;
...

Example:


using System;
namespace first_space
{
   class namespace_cl
   {
      public void func()
      {
         Console.WriteLine("Inside first_space");
      }
   }
}
namespace second_space
{
   class namespace_cl
   {
      public void func()
      {
         Console.WriteLine("Inside second_space");
      }
   }
}   
class TestClass
{
   static void Main(string[] args)
   {
      // dichiaro fc di tipo classe namespace_cl() prelevata dal namespace first_space
      first_space.namespace_cl fc = new first_space.namespace_cl();
      // dichiaro sc di tipo classe namespace_cl() prelevata dal namespace second_space
      second_space.namespace_cl sc = new second_space.namespace_cl();
      // avvia le funzioni prelevate dal namespace first_space
      fc.func();
      // avvia le funzioni prelevate dal namespace second_space
      sc.func();
      // aspetto che l'utente interagisca con la tastiera prima di chiudere la finestra
      Console.ReadKey();
   }
}

The result is:

Inside first_space
Inside second_space

using

Con la keyword ‘using’ indichiamo al compilatore che il codice che scriveremo userà i ‘nomi’ specificati nel ‘namespace’ indicato.
In questo modo siamo in grado di scrivere codice più compatto.

In C# lo utilizziamo nelle applicazioni console per indicare al compilatore che utilizziamo il namespace ‘using System;’ fornito da Microsoft.

using System;
Console.WriteLine ("Hello there");

è equivalente a:

System.Console.WriteLine("Hello there");

Vediamo un esempio con un namespace creato da noi:


using System;
using first_space;
using second_space;

namespace first_space
{
   class abc
   {
      public void func()
      {
         Console.WriteLine("Inside first_space");
      }
   }
}
namespace second_space
{
   class efg
   {
      public void func()
      {
         Console.WriteLine("Inside second_space");
      }
   }
}   
class TestClass
{
   static void Main(string[] args)
   {
      abc fc = new abc();
      efg sc = new efg();
      fc.func();
      sc.func();
      Console.ReadKey();
   }
}

The result is:

Inside first_space
Inside second_space

Notare come è stato sufficiente scrivere:

abc fc = new abc(); // dichiaro che fc è tipo classe abc
fc.func(); // richiamo la funzione

invece di:

first_space.namespace_cl fc = new first_space.namespace_cl();
fc.func();

Molto più breve e merno soggetto a errori di battitura.