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: 516 | Odgovora: 7 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

01011011
Nikola Ivetić
CHICAGO, USA

Član broj: 561
Poruke: 2314
65.216.70.*

ICQ: 45747235
Sajt: www.memorizeme.net


Profil

icon MyBase.New i Base.new() u C# Kako da odradim29.02.2008. u 19:21

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

29.02.2008. u 19:21 

negyxo
Aleksandar Perkuchin
unknown

Član broj: 29751
Poruke: 635
212.200.215.*



Profil

icon Re: MyBase.New i Base.new() u C# Kako da odradim29.02.2008. u 19:57
Pa zar nije base u c#-u?
Only Time Will Tell
29.02.2008. u 19:57 

01011011
Nikola Ivetić
CHICAGO, USA

Član broj: 561
Poruke: 2314
65.216.70.*

ICQ: 45747235
Sajt: www.memorizeme.net


Profil

icon Re: MyBase.New i Base.new() u C# Kako da odradim29.02.2008. u 19:59
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;
            }
        }

29.02.2008. u 19:59 

Predrag Glumac
Jeffersonville, Indiana

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



Profil

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

Lazu
Code:
public <ImeTvojeKlase>() : base(){
29.02.2008. u 20:00 

01011011
Nikola Ivetić
CHICAGO, USA

Član broj: 561
Poruke: 2314
65.216.70.*

ICQ: 45747235
Sajt: www.memorizeme.net


Profil

icon Re: MyBase.New i Base.new() u C# Kako da odradim29.02.2008. u 20:37
Kako bi onda ovo prepisao gore?
29.02.2008. u 20:37 

Predrag Glumac
Jeffersonville, Indiana

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



Profil

icon Re: MyBase.New i Base.new() u C# Kako da odradim29.02.2008. u 23:48
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.
29.02.2008. u 23:48 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

Moderator
Član broj: 17944
Poruke: 1661
195.252.78.*



Profil

icon Re: MyBase.New i Base.new() u C# Kako da odradim01.03.2008. u 19:00
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
01.03.2008. u 19:00 

01011011
Nikola Ivetić
CHICAGO, USA

Član broj: 561
Poruke: 2314
65.216.70.*

ICQ: 45747235
Sajt: www.memorizeme.net


Profil

icon Re: MyBase.New i Base.new() u C# Kako da odradim03.03.2008. u 16:41
hvala na ovako dobrom odgovoru :)
03.03.2008. u 16:41 

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

[ Pregleda: 516 | Odgovora: 7 ]

Postavi temu Odgovori

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