Nej, sista ska vara: Tack, <b>>And är ju båda villkoren uppfyllda, vilket torde ge samma resultat som du menar?</b> Mm, lite trött är du nog Niklas. Det finns ju ingen datatyp i VB.NET som heter int ;-) Och som tips till Ann. Tack André för länken. <b>>Niklas: om jag avser att byta datatyp ska jag väl använda variant? Eller om du menar att jag byter datatyp all togheter, då använder jag search and replace.</b> Där ser man, tack för att du tog dig tid att övertyga mig.Översättning av kodsnutt C# -> VB
Är detta korrekt?
int E = ( 11 * G + 20 + Y - X ) % 30;
if (E == 24) {E++;}
if ((E == 25) && (G > 11)) {E++;}
översätts till:
Dim intE As Integer = (11 * intG + 20 + intY - intX) Mod 30
If intE = 24 Then intE += 1
If intE = 25 And intG > 11 Then intE += 1
Tack på förhand,
///AnnSv: Översättning av kodsnutt C# -> VB
If intE = 25 AndAlso intG > 11 Then intE += 1
för att de ska bli ekvivalenta (påverkar om G i själva verket är ett anrop, och det i sin tur har sidoeffekter).
Sen förstår jag inte varför du har lagt till int framför varje variabel?
<b>Lägga på</b> ungersk notation?!Sv:Översättning av kodsnutt C# -> VB
Vad är det för skillnad på and och andalso? (Edit, googlar och där ser man vad man missat)
Så här resonerade jag förut :)
And är ju båda villkoren uppfyllda, vilket torde ge samma resultat som du menar?
Dvs på svenska om intE är av värdet 25 samt att intG är större än 11.
Or är bara ett av villkoren uppfyllda.
Det jag aldrig stött på förut var E++
Tänkte ta reda på mer vad det betyder och ger för effekter och då måste jag veta att jag har rätt i koden.
Eftersom jag är självlärd försöker jag hålla reda på datatyperna genom att skriva med ungersk notation (terminologi är inte min starka sida).
Många kodexempel i vb är skrivna så, en del av dem vars kod jag arbetat med har gjort så.
Vad är nackdelen?
Edit: Läser på här http://visualbasic.about.com/od/quicktips/qt/vbnetlogop.htm skummade och läste "and then the program works". Precis sådan information vill man ju ha :).
Edit II: datatyp int i C# motsvaras av long i vb så inte konstigt att jag fått avrundningsfel.
dvs. värden mellan -2,147,483,648 to 2,147,483,647. Sedär det blev en givande kväll där jag lärde mig en hel del nytt :). Sv: Översättning av kodsnutt C# -> VB
And är inte short-cicuiting, AndAlso är det (och det är också &&).
Vad det betyder är att kompilatorn skippar resten av if-satsen så fort den är säker på resultatet.
alltså, låt säga att a = true, b=false, c = true. Vi kollar då på:
a and b and c
När VB-kompilatorn upptäcker detta kollar den först a, sen b, sen c - utan att bry sig om delresultat. Alltså:
a => true
a and b => false
false and c => false
När språk från C-stammen, däribland C# använder && fungerar det på ett annat sätt (och AndAlso är motsvarigheten till detta). Tidigare fråga kommer då hanteras:
a => true (fortsätt)
a andalso b => false (hoppa ur)
och sen tar det slut. Detta är dels för en liten prestandavinst, men också för att man ska kunna skriva kod som:
if x isnot nothing andalso x.isSomething()
det andra anropet skulle alltså krascha om x var nothing, och koden skulle inte fungera med and. Där hade man behövt göra något i stil med:
if x isnot nothing then
if x.isSomething() then
för att anropet inte skulle ske.
ok?
i++ betyder "öka i med 1". i c och c++ betyder det också "returnera värdet på i efter ökningen", har inte koll på om det är så i c# också.
<b>ungersk notation [...] Vad är nackdelen?</b>
Nackdelen: vad händer om du byter datatyp? du har tre extra tecken per variabel.
Vad är fördelen? IDE:t ger ändå tips om det, och det är ju oftast bara att kolla några rader upp för att se deklarationen ändå.
<b>>datatyp int i C# motsvaras av long i vb</b>
Nu kan jag ha snurrat ihop det på kvällskvisten, men det är väl:
datatyp int i C# motsvaras av long i vb6
datatyp int i C# motsvaras av int i vb.net
?Sv:Översättning av kodsnutt C# -> VB
Däremot ger både
//C#
MessageBox.Show(int.MaxValue.ToString());
&
'VB.NET
MessageBox.Show(Integer.MaxValue)
resultatet
2147483647Sv: Översättning av kodsnutt C# -> VB
Denna verkar översätta koden rätt:
http://www.developerfusion.com/tools/convert/csharp-to-vb/Sv:Översättning av kodsnutt C# -> VB
Datatyper är alltid intressant och här hittar jag hur det ser ut i VB.NET.
http://ondotnet.com/pub/a/dotnet/2001/07/30/vb7.html Så Int finns i viss mån. Int32 etc.
Tydligen är C# int = VB.NET Integer.
Niklas: om jag avser att byta datatyp ska jag väl använda variant? Eller om du menar att jag byter datatyp all togheter, då använder jag search and replace. Kanske mest en smaksak? Varför finns det så många som rekommenderar att man använder notation samt även använder det tro?
Tack för svaren, jag tragglar vidare och lär mig under tiden.Sv: Översättning av kodsnutt C# -> VB
Ja, det är klart att du kan - men om du glömmer det, så stämmer inte namnet och typen överrens.
<b>>Kanske mest en smaksak? Varför finns det så många som rekommenderar att man använder notation samt även använder det tro?</b>
Många rekommender<b>ade</b> ungersk notation, till och med MS hade det som officiell rekommendation. (Sen var det så att ungersk notation från början var något annat än system-ungersk som finns idag. I början var det tänkt att visa betydelsen av variabler - inte datatypen. Detta förvanskades dock snabbt...)
Hur som helst - det är få som rekommenderar det idag, av flera skäl:
1. Du får redundant information, om man byter på ena stället måste man byta på andra.
2. Du får längre variabelnamn, vilket ger mindre utrymme att beskriva vad variabeln faktiskt innehåller. Alternativt kan du korta ner koden och på så sätt ha bättre överblick över koden.
3. Du måste hitta på nya förkortningar för alla klasser, alla typer, alla kontroller. Och sen förmedla dessa till alla som ska titta på koden. Och du kan inte enforce:a att det följs på något sätt.
4. Det finns olika standarder. Vanligt är att folk skriver iNumber istället för intNumber. En annan vanlig är textbox som förkortas txb eller txt. Ytterligare en variant är buttons som antingen är cmd eller btn.
Hjälper föga med en standard när den är olika överallt.
Och fördelarna är ytterst få. Vad ska jag ha variabelns typ till? Dels kan jag hoppa till deklarationen med en knapptryckning, dels framgår det av namnet i övrigt, dels visar mitt IDE vad det är under tiden jag skriver den.
Notera också att MS nu har en tydlig linje MOT ungersk notation.Sv:Översättning av kodsnutt C# -> VB
Kompletterar med en länk.
http://www.irritatedvowel.com/Programming/Standards.aspx
Exempel camel och pascal längst ned:
http://www.knowdotnet.com/articles/namingguidelines.html