Een file op de A12 is nooit grappig...
Verwijderd
C# is meer dan de referentie - taal van .NET, C# is de taal waar de CLR naar mapt.
Op m'n werk werd er door een grote groep mensen vooral in VB6 gewerkt, nu wordt er overgestapt naar .NET en is er voor C# gekozen en niet voor VB.NET.
https://fgheysels.github.io/
Verwijderd
En ookal ben ik VB gewend toch heeft C# een veel lekkerder syntax.
Verwijderd schreef op 26 september 2002 @ 22:38:
In C# heb je method overloading
Operator overloading bedoel je? AFAIK heb je method overloading in VB.NET gewoon ook hoor.
https://fgheysels.github.io/
In VB.NET ook hoorIn C# heb je method overloading
Das inderdaad een erg fraaie feature van C# (in VS.NET dan he).en in-line commenting (tik /// in je code en je krijgt een help-xml-template, hiermee kan je je eigen msdn-style helpfiles genereren) wat je in VB.NET niet hebt.
Als je in het verleden VB of VBScript hebt geprogrammeerd is het verfrissend om op een nieuw platform ook eens een andere taal te gebruiken (C#). Kun je lekker met een schone lei beginnen en verval je niet te snel in oude VB ranzigheid. Helaas denken mijn VB collega's daar anders over
Een ander voordeel van C# is dat je naast de .NET samples ook lekker kunt meeliften met de dingen die in de Java wereld bedacht worden
Verwijderd
maar om daar nou je taalkeuze van af te laten hangen
Zie deze post die alles nog wat beter uitlegt, met VB .NET en IL voorbeelden.
[rml]mbravenboer in "[ C#] Hoe doe ik dit in C#"[/rml]
Dit is overigens iets heel anders dan de with statement en dergelijke: deze worden door de compiler verwijderd. Het is in feite vrij eenvoudig suiker om het geheel aantrekkelijker te maken (of dat ook gelukt is mag ieder voor zich beoordelen
Laat het overigens duidelijk zijn dat dit zeker geen reden is om nu voor VB .NET te gaan kiezen en dat het ook geen reden is om nu voor C# te gaan kiezen
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
In die post zeg je dat een run-time member function eigenlijk een public static method is. Die heb je in C# gewoon ook, maar het enige verschil met de VB.NET manier is dat je je classname ervoor moet plakken:mbravenboer schreef op 27 september 2002 @ 00:59:
Wat op zich wel grappig is: C# is inderdaad nogal de 'versyntaxing' van de intermediate language, maar toch is er 1 feature die niet in C# aanwezig is, wel in de IL en ook in VB .NET: run-time member functions (dan heb ik het dus niet over static methoden). Dit zijn een soort globale functies/procedures. In C# zijn deze niet opgenomen, maar in de IL is dit dus wel beschikbaar. In VB .NET is er weer voor gekozen om ze ook voor de programmeur beschikbaar te stellen. Merkwaardig verschil als je het mij vraagt (maar dat doet niemand).
Zie deze post die alles nog wat beter uitlegt, met VB .NET en IL voorbeelden.
[rml]mbravenboer in "[ C#] Hoe doe ik dit in C#"[/rml]
1
| Class.StaticMethod |
En dit is eigenlijk mooier dan die 'run-time members' van VB.NET.
Dat het With statement niet in C# zit, daar ben ik niet rouwig om. Ik heb het zelf nog nooit (Delphi) gebruikt, want ik vind dat het toch redelijk onduidelijke code kan opleveren.Dit is overigens iets heel anders dan de with statement en dergelijke: deze worden door de compiler verwijderd. Het is in feite vrij eenvoudig suiker om het geheel aantrekkelijker te maken (of dat ook gelukt is mag ieder voor zich beoordelen). In dit geval gaat het om een constructie die niet in een andere vorm uit te drukken is en rechtstreeks vertaald wordt in IL constructies.
https://fgheysels.github.io/
Verwijderd
Maak daar maar een grote NEE van. In VB.NET moet je expliciet op_implicit() troep aanroepen en om de regel zowat CType() handel.whoami schreef op 26 september 2002 @ 22:44:
[...]
Operator overloading bedoel je? AFAIK heb je method overloading in VB.NET gewoon ook hoor.
In C#:
DateTime da1, da2;
// fill da1, da2 with values
if(da1 < da2)
{
// do something
}
nou vergeet dat maar in VB
Verder, waarom kan ik wel dit doen in C#:
SqlInt32 i;
int j;
j=10;
i = j;
Maar moet ik in VB.NET doen:
Dim i as SqlInt32
Dim j as Integer
j=10
i = new SqlInt32(j)
en werkt
i = j
niet.
Hint: implicit operator overloading is niet aanwezig in VB.NET, dus de conversieroutines die zijn gedefinieerd op SqlInt32 als implicit operators werken niet in VB.NET.
Verwijderd schreef op 27 september 2002 @ 10:24:
[...]
Maak daar maar een grote NEE van. In VB.NET moet je expliciet op_implicit() troep aanroepen en om de regel zowat CType() handel.
In C#:
DateTime da1, da2;
// fill with values
if(da1 < da2)
{
// do something
}
nou vergeet dat maar in VB
Wat heeft dit met method overloading te maken? Ik denk dat je iets te snel gelezen hebt.
Method overloading kan gewoon in VB.NET:
Overloading is the creation of more than one procedure, instance constructor, or property in a class with the same name but different argument types.
Overloading is especially useful when your object model dictates that you employ identical names for procedures that operate on different data types. For example, a class that can display several different data types could have Display procedures that look like this:
code:
1 2 3 4 5 6 7 8 9 Overloads Sub Display(ByVal theChar As Char) ' Add code that displays Char data. End Sub Overloads Sub Display(ByVal theInteger As Integer) ' Add code that displays Integer data. End Sub Overloads Sub Display(ByVal theDouble As Double) ' Add code that displays Double data. End Sub
https://fgheysels.github.io/
Verwijderd
Absoluut niet. VB.NET heeft een aantal syntactische dingetjes die wellicht nuttig kunnen zijn (With) maar C# heeft zaken die VB.NET absoluut niet heeft (operator overloading).paulgielens schreef op 26 september 2002 @ 22:59:
maakt niets uit... je kan met beide exact hetzelfde
VB:
m_iErrorCode = New SqlInt32(CType(scmCmdToExecute.Parameters.Item("@iErrorCode").Value, Integer))
C#:
m_iErrorCode = (Int32)scmCmdToExecute.Parameters["@iErrorCode"].Value;
Het moge duidelijk zijn wat mijn voorkeur heeft. Naast het feit dat VB.NET's editor door debielen gemaakt is en bv niet voorziet in autowire event handling code generation in ASP.NET pages. (en andere zaken).
Verwijderd
Denk het niet. Operator overloading is niet alleen explicit operator overloading maar ook implicit operator overloading. Al die operators die zijn gedefinieerd bij de .NET classes in de API kun jij niet gebruiken in VB.NET. Je kunt alleen explicit operators definieren, maar niet implicit. De implicit operators, die nu juist zo handig zijn, kun je vergeten.whoami schreef op 27 september 2002 @ 10:29:
[...]
Wat heeft dit met method overloading te maken? Ik denk dat je iets te snel gelezen hebt.
Leg me dan maar eens uit hoe het zit met de implicit operators mbt Sql* types die wel werken in C# maar die je expliciet via op_implicit() moet aanroepen in VB.NET.Method overloading kan gewoon in VB.NET:
[...]
https://fgheysels.github.io/
Verwijderd
maar iig: VB.NET heeft geen operator overloading, iets dat inmens nadelig is voor software development met .net.
Verwijderd
Je werkt voornamelijk met het framework, en die is uiteraard gelijk!
Nee, er is wel een belangrijk verschil: de functie/procedure in IL en VB .NET bevindt zich namelijk niet in een klasse. Het gaat hier dus niet om gewone static methoden. Bekijk het pdf'je maar eens wat ik daar link (en uit quote).whoami: In die post zeg je dat een run-time member function eigenlijk een public static method is. Die heb je in C# gewoon ook, maar het enige verschil met de VB.NET manier is dat je je classname ervoor moet plakken
With vind ik zelf ook niet zo heel erg fantastisch, op een volgende methode invocatie is wel een aardig iets. In de Java library zie je bijvoorbeeld op enkele plaatsen dat methoden 'this' opleveren om op een volgende methode invocatie mogelijk te maken. Dit maakt de library onduidelijk en is typisch iets wat gewoon in de taal moet worden opgelost.Dat het With statement niet in C# zit, daar ben ik niet rouwig om. Ik heb het zelf nog nooit (Delphi) gebruikt, want ik vind dat het toch redelijk onduidelijke code kan opleveren.
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
Verwijderd
Niet fraai, wel handig
Anders ga je effe labels promoten!!! 14(!) jaar geleden was goto & gosub een revolutie, maar nu mag je er niet meer over praten.Verwijderd schreef op 28 september 2002 @ 00:22:
In VB.NET heb je nog altijd On Error Resume Next. Dit kan handig zijn als je bij het vullen van 200 properties niet de exceptions wilt zien (bv NULL values). Er is nl. geen alternatief met try/catch, of je moet om elke property set een try/catch zetten. (veel plezier met al die properties)
Niet fraai, wel handig
oogjes open, snaveltjes dicht
Verwijderd
C# dwingt je niet netter te werken dan Basic, sterker, omdat je meer zelf moet doen kun je op meer plaatsen er een potje van maken. De VB editor in vs.net is daarnaast slimmer dan de C# editor en insert/format code voor je, zodat het geheel er netjes uitziet.The - DDD schreef op 28 september 2002 @ 02:20:
Indien je niet kunt kiezen, dan zou ik zeker voor C# gaan. En helemaal als je C, C++ of java ervaring hebt. C# dwingt je om netter te werken dan Basic. Daarnaast is de taal C# expressiever dan Basic. Kijk alleen al is naar error handling.
C# is wel expressiever, dwz, je moet meer zelf doen (denk aan eventhandler creation: in C# moetje zelf de delegates aanmaken, in VB gebeurt dat onder water). De error handling is in VB expressiever, want naast trycatchfinally heb je ook on error goto/resume.
Met als nadeel dat dit bij een groot project en een niet zo snelle computer erg vertragend kan werken en je deze "feature" niet uit kan zetten (voor zover ik zie).Verwijderd schreef op 28 september 2002 @ 10:18:
[...]
C# dwingt je niet netter te werken dan Basic, sterker, omdat je meer zelf moet doen kun je op meer plaatsen er een potje van maken. De VB editor in vs.net is daarnaast slimmer dan de C# editor en insert/format code voor je, zodat het geheel er netjes uitziet.