CS-opas:using namespace

Mureakuha

Loikkaa: valikkoon, hakuun
Teknisistä rajoituksista johtuen artikkelin yllä näkyvä otsikko on virheellinen. Oikea otsikko on C#-opas: using namespace.

Sisällysluettelo

Namespace

namespace-avainsanalla kerrotaan nimiavaruus johon luokka kuuluu. C#:ssa jokaisen luokan, enumeraation, struktuurin ja delegaatin tulee olla jonkin nimiavaruuden sisällä.

namespace A
{
    class Luokka { }
}

Edellinen esimerkki määritti Luokka luokan nimiavaruuteen A. Nyt luokkaa voitaisiin kutsua koodissa A.Luokka tai sitten lisäämällä alkuun 'using A;' rivin. Nimiavaruuksilla voidaan erotella luokkia toisistaan, jotta nimien päällekkäisyyksiä ei syntyisi. Nimiavaruuksia voi olla useita sisäkkäin

namespace A
{
    namespace B
    {
        class Luokka { }
    }
}

tai vastaavasti

namespace A.B
{
    class Luokka { }
}

Using

Nimiavaruuksien tuominen scopeen

namespace avainsanalla luotiin nimiavaruuksia, joihin luokat sijoittuivat. Kirjoitettaessa ohjelmaa tarvitaan useita kertoja tietystä nimiavaruudesta kaivaa luokka tai mahdollisesti useita eriluokkia. Tällöin kannattaa using:n avulla lyhentää koodia.

using A.B;
public class Esim {
   public static void Main() {
      Luokka l = new Luokka();
      //tai pitemmin, jos using puuttuisi
      A.B.Luokka l2 = new A.B.Luokka();
   }
}
//Jossain muualla kirjoitettua
namespace A.B
{
    class Luokka { }
}

Resurssien vapauttaminen käytön jälkeen

Using-avainsanaa voi käyttää myös olion automaattiseen hävittämiseen käytön jälkeen:

using (Graphics g = Graphics.FromImage (myImage)) {
   g.Clear (); // Tosielämässä tässä luultavasti tehtäisiin jotain järkevää
}
// Tässä kohtaa g ei ole enää scopessa, ja resurssi on vapautettu 
 

Using-avainsanaa voi käyttää näin ainoastaan luokissa jotka toteuttavat IDisposable -rajapinnan.

Aliaksen luominen

Koodia kirjoitettaessa tulee usein mieleen miten pitkän luokan nimen kirjoittamista voisi lyhentää. Ratkaisu lyhentämiseen on using avainsana, jolla luodaan myös aliaksia luokien nimille.

using LyhytNimi = Pitkä_nimisen_luokan_tai_tyypin_nimi;
Henkilökohtaiset työkalut