C# Static

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
arxeiss
Začátečník
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

C# Static

Příspěvek od arxeiss »

Na škole se učím C# a absolutně nechápu význam operátoru nebo jak to nazvat Static. Jediné co chápu že ve statické metodě, třídě apod nemůžu používat proměnné, metody atd které nejsou statické. Nevím jestli vůbech chápu dobře to co jsem teď napsal, ale prostě nechápu význam, použití. Zatím děláme v Consoli a tam je Main statická, takže asi budu muset z ní volat pouze statické metody...
Je na netu nějaký článek kde je to napsané tak abych to pochopil? Seru se s tím už dlouho a furt tomu nerozumím. Díky za jakoukoli pomoc. Na googlu jsem hledal, něco málo jsem našel a tam jsem pochopil co jsem napsal nahoře
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

Re: C# Static

Příspěvek od OndraSter »

Jednoduše řečeno... statické metody lze volat bez vytvoření instance objektu. Tzn když budeš mít:

static public int foo () { return 123; }
public string hello () { return "Hello World"; }

tak pro zavolání foo ti stačí

int vysledek = mojeTrida.foo();

kdežto pro hello potřebuješ:

mojeTrida trida = new mojeTrida();
string vysledek = trida.hello();


Jasný?
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
arxeiss
Začátečník
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

Re: C# Static

Příspěvek od arxeiss »

Jo, toto jsem z toho tvojeho pochopil. A na co je to Static vůbec? On nám to vysvětloval že se ta třída, metoda nevytvoří tím pádem tam nemůžeš nikdy vytvořit objekt. Ale v našem jednom příkladě ve statické metodě jsme použili toto

Kód: Vybrat vše

seznam.Add(new Zbozi("Kolo", 1000));
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

Re: C# Static

Příspěvek od OndraSter »

Pokud "seznam" je vytvořený na začátku metody tak nevidím důvod, proč by to nemělo jít.


Statické metody nemají instanci objektu => nemůžou přistupovat k proměnným či metodám ve své třídě (nejsou-li opět statické; nebo si musíš v dané statické vytvořit instanci objektu a pak volat mujObjekt.nestatickaMetoda() ), neboť se nevolá konstruktor => nic jako this neexistuje.
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
arxeiss
Začátečník
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

Re: C# Static

Příspěvek od arxeiss »

Já jsem neřekl že to nefunguje. Díky za snahu, trochu jsem to pochopil dále, ale furt nevidím důvod používat static. Je v tom když je to static nějaký fígl nebo proč se to používá?
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

Re: C# Static

Příspěvek od OndraSter »

Static by se dalo říci je prostě metoda, kterou nechceš mít v hlavní třídě programu ale jinde a nechceš kvůli ní vytvářet instanci objektu atd. Nesežere to tolik paměti.

Představ si, že bys musel mít toto:

Math matika = new Math();
int vysledek = matika.Sqrt(123);

Není lepší udělat rovnou
int vysledek = Math.Sqrt(123);
? :wink:
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
Odpovědět

Zpět na „Programování a web“