Avatar billede simon.ulsnes Nybegynder
03. august 2002 - 12:16 Der er 11 kommentarer og
1 løsning

Bare en tanke...

Hej eksperter,
Nu har jeg arbejdet en hel masse med C# og .NET, men jeg ved ikke så meget om VB.NET.
Så kom jeg på en tanke. I C# kan man have flere constructors i en klasse som bliver kaldt alt efter hvilke argumenter osv. der gives videre. Eks:
public MyClass(string str) { ... }
public MyClass(int i) { ... }
public MyClass(object o) { ... }

Kan man det samme i VB.NET?
Hvis ikke, ville jeg mene det var den endelige grund til at foretrække C#... Men som sagt tidligere, så tror jeg det er en religionssag...

// Simon
Avatar billede jakobandersen Nybegynder
03. august 2002 - 13:17 #1
Ja, det kan man også i VB.NET, det kaldes overloaded constructors
Avatar billede simon.ulsnes Nybegynder
03. august 2002 - 13:51 #2
Ja, OK, hvordan?
Avatar billede odegaard Nybegynder
03. august 2002 - 14:34 #3
Jeg ville nu ikke kalde det en religionssag; nærmerede at man bør programmere med den syntax der minder mest om det man er vant til.
Avatar billede jakobandersen Nybegynder
03. august 2002 - 17:40 #4
Du bruger New funktionen

Protected Class minKlasse
  Public Sub New(ByVal minParam As Integer)
    'Gør noget med parametre
  End Sub
  Public Sub New()
    'Gør noget uden parametre
  End Sub
End Class
Avatar billede jakobandersen Nybegynder
03. august 2002 - 17:41 #5
odegaard> Hvad man er vant til har vel også noget at gøre med religion :-)

Desuden er C# jo altså også lidt hurtigere...
Avatar billede odegaard Nybegynder
03. august 2002 - 18:22 #6
Tja... det er jo det man bliver født ind i, helt uden at få et valg :-)
Så måske har du ret.
Hvor har du fra at C# er hurtigere? (at skrive er det måske)
Avatar billede simon.ulsnes Nybegynder
03. august 2002 - 18:27 #7
C# er ikke bare hurtigere at skrive, det er meget hurtigere at skrive... Og for mig er det også betydeligt nemmere at overskue, fordi objekter adskilles fra syntakstegn, f.eks. {, }, == osv...

Desuden mener jeg jo inderst inde og i virkeligheden, at VB(.NET) er lidt taberagtigt, fordi det er nemmere, men det er selvfølgelig en noget højrøvet holdning som jeg ikke vil argumentere for... :-)

// Simon
Avatar billede jakobandersen Nybegynder
03. august 2002 - 19:44 #8
Ja, der er generelt færre tegn når man skriver c#, men det er nu ikke det jeg lige tænkte på.

VB.NET laver mange kald til den baseclass der bibeholder tilbagekombabiliteten med VB6, jeg har skrevet en artikel om forskellen på VB.NET IL og C# IL som jeg snart publicerer.
Avatar billede simon.ulsnes Nybegynder
03. august 2002 - 22:47 #9
Hmm, jeg troede ellers at VB.NET og C# bortset fra syntaks var komplet ens, eller at de i hvert fald blev oversat til det samme sprog, nemlig MSIL...?

// Simon
Avatar billede jakobandersen Nybegynder
04. august 2002 - 01:07 #10
Ja, men MSIL koden er ofte ikke helt ens. VB.NET bliver ofte oversat til kode der benytter Microsoft.VisualBasic klassen. F.eks. i sammenligning af strenge laver C# et kald til:

IL_000e: call bool [mscorlib]System.String::op_Equality(string,string)

Hvorimode VB.NET laver kaldet til:

IL_000f: call int32 [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.StringType::StrCmp(string,string,bool)

Afhængig af hvormeget man bruger funktioner der tager højde for bagudkompabiliteten kan dette forringe performance med op til 3-4%. Denne information er overfor mig blevet bekræftet af en udvikler fra microsofts Common Language Runtime Team
Avatar billede jakobandersen Nybegynder
08. august 2002 - 12:56 #11
Hva' Simon tror du ikke det er på tide at lukke?
Avatar billede simon.ulsnes Nybegynder
08. august 2002 - 15:46 #12
nå jo, godt du mindede mig om det...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester