Tässä esimerkissä on pyrittä mahdollisimman vähäisellä koodilla esittämään ja toteamaan, että oliosta on tehty kopio.
Imports System Class K Implements ICloneable 'IClonable rajapinta esittää clone metodin Public jokuArvo As Integer 'jokuArvo muuttujaa tarvitaa todisteeksi Public Sub New(ByVal i As Integer) jokuArvo = i End Sub 'Clone metodilla luodaan uusi kopio oliosta Public Overridable Function Clone() As Object 'MemberwiseClone on esitelty object luokassa, 'mutta se on suojattu (protected). 'Tätä varten sitten tehdään Clone metodi, 'joka on esitelty IClonable rajapinnassa. Return Me.MemberwiseClone End Function Public Shared Sub Main() 'Luodaan alkuperäinen olio, jolle 'annetaan kokeeksi arvo 7 Dim k1 As K = New K(7) 'Clone palauttaa object, joten 'tarvitaan tyyppimuunnos Dim k2 As K = CType(k1.Clone, K) 'Muutetaan kopion arvoa kokeeksi k2.jokuArvo = 10 Console.WriteLine("k1={0} ja k2={1}", k1.jokuArvo, k2.jokuArvo) 'tehdään testi tulostus, jotta voidaan 'todeta olioiden olevan toisistaan riippumattomia End Sub End Class
:E
Hassu
Eikös tuon voisi hoitaa ihan tavallisella sijoitusoperaatiolla? Siis, jos halutaan kopioida vaikka k(0):n tiedot k(1):een, koodi k(1) = k(0) toimii ainakin VB6:ssa. Tai sitten olen tapani mukaan misymmärtänyt jotain. :/
lainaus:
Eikös tuon voisi hoitaa ihan tavallisella sijoitusoperaatiolla? Siis, jos halutaan kopioida vaikka k(0):n tiedot k(1):een, koodi k(1) = k(0) toimii ainakin VB6:ssa. Tai sitten olen tapani mukaan misymmärtänyt jotain. :/
Ei, sillon syntyy viittaus.
Aihe on jo aika vanha, joten et voi enää vastata siihen.