Samo uz napomenu da se po hijerarhiji poziva defaul bazni konstruktor (bez parametara), ako VB kod sadzi poziv MyBase.New sa parametrima, onda mora da se iskoristi base(parametri) forma inace ce biti pozvan bazni konstruktor cak iako se potpisi konstruktora identicni:
Code:
class Class00
{
public Class00() { }
public Class00(int i) { }
}
class Class01 : Class00
{
public Class01() { }
public Class01(int i): base(i) { } // ovo poziva Class00(int)
// public Class01(int c) { } // ovo bi pozvalo Class00()
}
I u pravu si za vb.net, poziv MyBase.New() je suvisan. Header konstruktora ce vec obaviti poziv default konstruktora, koriscenje MyBase.New() je identicno koriscenju base()
Medjutim, prica je potpuno drugacija sa Finalize (C# destruktorima). u C#-u ce kompajler obezbediti pozivanje parent edstruktora, u VB.NET nece. Tj C# destruktor proizvodi sledeci kod (prebacen u VB.NET da ne listam IL):
Code:
C#
class Class01 : Class00
{
~Class01() { <neki kod>}
}
VB.NET:
Protected Overrides Sub Finalize()
Try
<neki kod>
Finally
MyBase.Finalize
End Try
End Sub
medjutim, VB Finalizer iz Class01 je prazan:
Code:
.method family virtual instance void Finalize() cil managed
{
.maxstack 8
L_0000: nop
L_0001: nop
L_0002: ret
}
Dakle ako se C# kod portuje u VB.NET mora se ekspicitno napraviti Try/Finaly konstrukcija koja poziva nasledjeni Finalizer.
▪ The word 'politics' is derived from the word 'poly', meaning 'many', and the word 'ticks', meaning 'blood sucking parasites' - Larry Hardiman
▪ If the good guy gets the girl, it's rated PG; if the bad guy gets the girl, it's rated R; and if everybody gets the girl, it's rated X
▪ Illegal aliens have always been a problem in the United States. Ask any Native American