Jak "rozmnožit" třídu :-)   zodpovězená otázka

VB.NET

Dobrý večer,

poradil by prosím někdo jak by se dala "rozmnožit" již vytvořená třída za běhu v aplikaci? Uvedu příklad:

Dim Znacka() as MojeTrida
For i as integer = 1 to 5
   With Znacka(i)
     .Nazev = "Sloupec" & i
     .gY = 100 + i
   End With
Next i

cílem bych chtěl že bude vytvořených 5 objektů Znacka(1), Znacka(2),... a každý bude mít jiné hodnoty ve svých vlastnostech. Nedaří se mi ale to "rozmnožení"

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

Nedávno jsme to tady řešili. http://www.vbnet.cz/forum-tema--1270-kol...

A ještě něco, nemůžete hned přiřazovat do pole Znacka(i), musíte nejdříve do každého políčka vytvořit novou instanci třídy, uvnitř cyklu před samotným With blokem. U struktur to nutné není, u tříd ano.

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

Pokud vám jde vyloženě o "rozmnožení", tj. klonování požadované třídy nebo struktury, což znamená vytvoření nové instance se stejnými daty, můžete to realizovat implementací rozhraní ICloneable...

Module Module1
  Sub Main()
    Dim agent0 As New Agent(100, 100)
    Dim agent47 As Agent = DirectCast(agent0.Clone(), Agent)
  End Sub

  'Definice klonovatelné třídy
  Class Agent
    Implements ICloneable
    Private _stealth As Byte
    Private _aiming As Byte
    Public Sub New(ByVal aiming As Byte, ByVal stealth As Byte)
      _aiming = aiming
      _stealth = stealth
    End Sub
    Public ReadOnly Property Aiming() As Byte
      Get
        Return _aiming
      End Get
    End Property
    Public ReadOnly Property Stealth() As Byte
      Get
        Return _stealth
      End Get
    End Property
    'Samotná implementace klonování
    Public Function Clone() As Object Implements System.ICloneable.Clone
      Return New Agent(_aiming, _stealth)
    End Function
  End Class
End Module

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

Pánové,

mockrát děkuji za Váš čas a odpovědi. To klonování je taky dobrá věc a určitě se bude časem hodit ale to co mi uniklo bylo přesně to co píše pan Tomáš. Díky za ten link! nějak jsem ho přehlídnul než jsem psal tento dotaz. Ano tam je to jasně popsáno a funguje to bezvadně. Přesně to sedí i na ten můj případ.

Takže ještě jednou díky. Moc mi to pomohlo.

P.S. Je fajn že existuje tohle fórum. Fakt super.

Přeji hezký den.

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