Statická vs. instanční   zodpovězená otázka

VB.NET, Architektura

Dobrý den,

snažím se pochopit rozdíl mezi statickou (static) a instanční metodou (nebo třídou či cokoliv jiného).

Nějak si to pořád nedovedu představit, jaký (krom slova static) je v tom rozdíl.

Díky za vstřícnou odpověď :-)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

K instančnímu členu třídy (proměnná, vlastnost, metoda, událost) lze přistupovat pouze přes platnou instanci třídy, tj. třídu vytvořenou pomocí klíčového slova New.

Ke statickému členu třídy lze přistupovat bez nutnosti vytvoření instance třídy (nelze k němu přistupovat přes instanci třídy).

V C# je pro statický člen použito klíčové slovo static, ve VB.NET klíčové slovo Shared.

Public Class Person
  'Instanční proměnná třídy.
  Public Name As String
End Class

'Nelze ani přeložit, k instančním členům je přístup
'pouze přes platnou instanci.
Person.Name = "Ondřej" 

'Takto je to správně:
Dim o As New Person
o.Name = "Ondřej"



Public Class Person2
  'Statická proměnná třídy.
  Public Shared Name As String
End Class

'K proměnné Name lze přistupovat bez nutnosti
'vytvoření instance třídy.
Person2.Name = "Ondřej"

Ve VB.NET dále existuje klíčové slovo Static, které slouží k deklarování statických proměnných v rámci metody. Toto je mimochodem jedna z mnoha věcí které C# postrádá...

Public Class Counter
  Public Sub Increment()
    'Hodnota statické proměnné v rámci metody je uchována
    'i po ukončení metody.
    Static n As Integer
    n += 1
  End Sub
End Class

Statická třída (ve VB.NET známá jako modul, Module) je třída, jejíž všechny členy jsou statické.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pouze technická poznámka.

Pane Linharte, asi tam máte překlep i té instanční vlastnosti.

Máte

'Takto je to správně:
Dim o As New Person
Person.Name = "Ondřej"

a myslím, že by mělo být

'Takto je to správně:
Dim o As New Person
o.Name = "Ondřej"

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Ano, děkuji, opraveno.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback