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.