Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

MyBase.New i Base.new() u C# Kako da odradim

[es] :: .NET :: .NET Desktop razvoj :: MyBase.New i Base.new() u C# Kako da odradim

[ Pregleda: 2837 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

01011011

Član broj: 561
Poruke: 2341
65.216.70.*



+2 Profil

icon MyBase.New i Base.new() u C# Kako da odradim29.02.2008. u 19:21 - pre 196 meseci
Ovo su mi dakle zadnje 2 metode u klasi, i citam na itnernetu da nema zamjene u C# za mybase()

Kako bih mogao ovo da prebacim u C#

Code:

Public Sub New()

            MyBase.New()

            Try
                'Check to see if the footprint has been initialized
                If Footprint Is Nothing Then
                    Footprint = New Footprint()
                    Footprint.NewEntry = True
                End If
            Catch ex As Exception
                LogError(Err, Me, "Error while initializing object " & ex.Message & " " & ex.Source & Chr(13) & Chr(10) & ex.StackTrace)
            End Try

        End Sub

        Protected Overrides Sub Finalize()

            Try
                If Not Footprint Is Nothing Then Footprint = Nothing
            Catch ex As Exception
                LogError(Err, Me, "Error while finalizing object " & ex.Message & " " & ex.Source & Chr(13) & Chr(10) & ex.StackTrace)
            End Try

            MyBase.Finalize()

        End Sub
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
212.200.215.*



+171 Profil

icon Re: MyBase.New i Base.new() u C# Kako da odradim29.02.2008. u 19:57 - pre 196 meseci
Pa zar nije base u c#-u?
 
Odgovor na temu

01011011

Član broj: 561
Poruke: 2341
65.216.70.*



+2 Profil

icon Re: MyBase.New i Base.new() u C# Kako da odradim29.02.2008. u 19:59 - pre 196 meseci
Pa jeste... evo ovako sam ja ovo prepisao...mislim da se u c# koristi umjesto ovog overrajda destructor class

Pa bi to izgledalo ovako, nadam se da sam u pravu :) Ima li neko da potvrdi :)

Code:
       public Auction()
        {
            try
            {
                //Check to see if the footprint has been initialized
                if (Footprint == null)
                {
                    Footprint = new Footprint();
                    Footprint.NewEntry = true;
                }
            }
            catch (Exception ex)
            {
                Utils.LogError(ex);
            }
        }

        ~Auction()
        {
            try
            {
                if ((Footprint != null))
                    Footprint = null;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 
Odgovor na temu

Predrag Glumac
Luxembourg

Član broj: 167588
Poruke: 127
*.eunet.yu.



Profil

icon Re: MyBase.New i Base.new() u C# Kako da odradim29.02.2008. u 20:00 - pre 196 meseci
Citat:
i citam na itnernetu da nema zamjene u C# za mybase()

Lazu
Code:
public <ImeTvojeKlase>() : base(){
 
Odgovor na temu

01011011

Član broj: 561
Poruke: 2341
65.216.70.*



+2 Profil

icon Re: MyBase.New i Base.new() u C# Kako da odradim29.02.2008. u 20:37 - pre 196 meseci
Kako bi onda ovo prepisao gore?
 
Odgovor na temu

Predrag Glumac
Luxembourg

Član broj: 167588
Poruke: 127
*.eunet.yu.



Profil

icon Re: MyBase.New i Base.new() u C# Kako da odradim29.02.2008. u 23:48 - pre 196 meseci
Ja tu nis't ne bi dir'o, sto rece Chola Zbog hijerarhije kod nasledjivanja prvo se poziva bazni konstruktor pa onda konstruktor naslednika, a kada se deinicijalizuje klasa (konkretno pri garbage collection-u) poziva se destruktor naslednika pa destruktor roditelja, tako da ne moras nista eksplicitno navoditi kao sto je u izvornom VB kodu. Mada sam ubedjen da i pod VB.Netom isto funkcionise jer se prevede u MSIL, tako da je isto nepotrebno. Ako koristis overloaded konstruktore, onda preko navedenog pseudo-koda mozes da pozivas konstruktore koji nisu definisani u baznoj klasi.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: MyBase.New i Base.new() u C# Kako da odradim01.03.2008. u 19:00 - pre 196 meseci
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.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

01011011

Član broj: 561
Poruke: 2341
65.216.70.*



+2 Profil

icon Re: MyBase.New i Base.new() u C# Kako da odradim03.03.2008. u 16:41 - pre 196 meseci
hvala na ovako dobrom odgovoru :)
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: MyBase.New i Base.new() u C# Kako da odradim

[ Pregleda: 2837 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.