Autor Téma: Slovo "Static"  (Přečteno 11412 krát)

Offline erdt.martin

  • Příspěvků: 35
  • Karma: 0
Slovo "Static"
« kdy: 28-07-2012, 12:53:37 »
Ahoj,

mam dalsi otazku. Uz jsem asi otravnej, ale rad se ucim. Mam nekolik knizek o programovani v C# (ted ctu jednu). Narazil jsem na Static. Nahledl jsem i do ostatnich knizek, ale beztak jsem nenasel zadne srozumitelne vysvetleni, proc pouzivat Static a jak pouzivat static. Koukal jsme se i na google, ale beztak... Mohl by to tu nekdo prosim rozepsat trosku vic srozumitelneji? I s priklady treba :) Dekuji

Offline Mi.Chal.

  • Moderátoři
  • Guru
  • *****
  • Příspěvků: 577
  • Karma: 25
Re:Slovo "Static"
« Odpověď #1 kdy: 28-07-2012, 13:31:53 »
Static znamená, že daná vlastnost, metoda atd je vázaná na třídu, místo konkrétní instance. Takže pokud vyrobíš různé instance, tak budou hodnotu sdílet. Příklad je třeba počitadlo počtu vytvoření instancí - v konstruktoru budeš inkrementovat hodnotu property. Kdyby byla instanční, tak tam budeš mít na všech instancích 1. U statické se bude zvětšovat a pro všechny instance bude stejná.

Statické metody se často používají jako náhrada za funkce ve starších prg. jazycích. Třeba File.Exists() - můžeš to volat, aniž bys musel vyrábět instance File.

Offline Morfeus

  • Příspěvků: 2
  • Karma: 0
Re:Slovo "Static"
« Odpověď #2 kdy: 29-07-2012, 13:41:58 »
Třeba File.Exists() - můžeš to volat, aniž bys musel vyrábět instance File.
Trieda File je statická - z nej sa inštancia nedá vytvoriť. Mali ste na mysli zrejme triedu FileInfo, ktorá má vlastnosť Exists.

Offline Mi.Chal.

  • Moderátoři
  • Guru
  • *****
  • Příspěvků: 577
  • Karma: 25
Re:Slovo "Static"
« Odpověď #3 kdy: 29-07-2012, 13:54:50 »
Trieda File je statická - z nej sa inštancia nedá vytvoriť. Mali ste na mysli zrejme triedu FileInfo, ktorá má vlastnosť Exists.

Neměl, psal jsem příklad statické metody. Jestli od File jdou vytvářet instance není v tomhle kontextu až tak podstatné, pointa byla v tom, že metodu může volat, aniž by ty instance vytvářet musel (a někdy je vytvářet ani nemůže).

Jinak máš samozřejmě pravdu.

Offline erdt.martin

  • Příspěvků: 35
  • Karma: 0
Re:Slovo "Static"
« Odpověď #4 kdy: 29-07-2012, 15:22:59 »
A jaka je teda vyhoda v tom, ze vytvorim instanci?

Offline Mi.Chal.

  • Moderátoři
  • Guru
  • *****
  • Příspěvků: 577
  • Karma: 25
Re:Slovo "Static"
« Odpověď #5 kdy: 29-07-2012, 18:22:23 »
A jaka je teda vyhoda v tom, ze vytvorim instanci?

instanci čeho? Instance se vytvářejí, pokud objekt obsahuje nějaké stavové informace, které jsou pro něj specifické. Pokud s nimi chceš pracovat, tak musíš nejdřív vyrobit instanci dané třídy.

Offline Morfeus

  • Příspěvků: 2
  • Karma: 0
Re:Slovo "Static"
« Odpověď #6 kdy: 30-07-2012, 03:18:02 »
Neměl, psal jsem příklad statické metody. Jestli od File jdou vytvářet instance není v tomhle kontextu až tak podstatné, pointa byla v tom, že metodu může volat, aniž by ty instance vytvářet musel (a někdy je vytvářet ani nemůže).
OK, chápem. Ale v .NET Frameworku je množstvo iných tried, ktoré sú určite lepšími príkladmi ako File.