C# ja võtmesõna var

08.12.2007  |  Gunnar

C# ja võtmesõna var C# 3.0 üks uuendusi on muutujatüüpide tuletamine ehk type inference (kasutatakse ka terminit implicit casting), mis on üks kohtadest, kus kohtume võtmesõnaga var.

Nii mõnegi PHP pealt tulnud programmeerija jaoks tähendab see automaatselt sama, mida antud võtmesõna PHP-s tähendas. Enne mõnusaid lahmivaid arutelusid ja halamist maailma ehk C# lõpust võiks siiski küsida, et on see ikka nii? Vastan, et var C#-is ei ole sama, mis var PHP-s.

Enne kui edasi pudrutame, et C# on muutumas PHP-ks, teeme ühe lihtsa katse, millele eelnevalt õpime iseseisvalt veidike tundma sellist looma nagu Intermediate Language (IL). Samuti on mõttekas endale selgeks teha see, mida tähendab eelpool viitatud termin type inference. Seejärel asume vaatama järgmist primitiivset koodijuppi.

class Program
{
    static void Main(string[] args)
    {
        string name = "Tolmurull";
        var name2 = "Tolmurull";
    }
}

Kompileerime nüüd selle var nimelist kolli sisaldava koodi kokku ja vaatame, mis tulemus vaatab meile vastu kompileeritud koodis.

.method private hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint
  // Code size       14 (0xe)
  .maxstack  1
  .locals init ([0] string name,
           [1] string name2)
  IL_0000:  nop
  IL_0001:  ldstr      "Tolmurull"
  IL_0006:  stloc.0
  IL_0007:  ldstr      "Tolmurull"
  IL_000c:  stloc.1
  IL_000d:  ret
} // end of method Program::Main

Nagu näeme, polnud paanikaks siiski põhjust ja maailm veereb endiselt edasi. Type inference tähendab kaudset cast-imist ja muutuja tüübiks määrab kompilaator selle tüübi, mis omistati var muutujale selle deklareerimisel. Ja et parem uni tuleks, siis närvide rahustuseks veel üks väike asi. Järgmised kaks asja on keelatud ja nende peale annab kompilaator vea.

void SomeMethod()
{
    var x = null;
    var y;
}

Nüüd aga mõelge sellele, kuidas võiks var kasulik olla ja kuidas seda kindlasti mitte kasutada. Õiget vastust võite siia otsima tulla peatselt.

Head ööd! :)

2 kommentaari sissekandele “C# ja võtmesõna var”

  1. Kaarel

    Esimene näide vaja üle vaadata, praegu on täitsa tavaline C# 1.0 ;)

  2. Gunnar

    Nüüd on korras. Tänan tähelepanu juhtimast :)

Kommenteeri

sulge
Saada link e-postiga

© DT 2012 | Creative Commons Attribution-Noncommercial 3.0 License | WordPress