CS-opas:using namespace
Mureakuha
- 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;
